내 응용 프로그램에서 Font Awesome 을 사용하려고 하는데을 사용하여 글꼴 을 통합 할 수 Typeface.createFromAsset()
있었지만이 글꼴에서 제공하는 아이콘을 사용하고 싶지만 지금까지는 그렇게 할 수 없었습니다.
이 특정 글꼴에는 미디어 플레이어 컨트롤, 파일 시스템 액세스, 화살표 등과 같은 PUA (Unicode Private Use Area) 내에 아이콘이 포함되어 있습니다.
안드로이드에서 아이콘과 기호가 포함 된 글꼴을 사용한 사람이 있습니까?
답변
Font Awesome이 내 안드로이드 앱에서 제대로 작동하는 것 같습니다. 나는 다음을 수행했다.
- 복사
fontawesome-webfont.ttf
내 assests 폴더에 - 이 페이지를 사용하여 원하는 아이콘의 문자 엔티티를 찾았습니다. http://fortawesome.github.io/Font-Awesome/cheatsheet/
-
각 아이콘에 대해 strings.xml에 항목을 작성했습니다. 예를 들어 마음을 위해 :
<string name="icon_heart"></string>
-
내 XML 레이아웃의 관점에서 상기 항목을 참조했습니다.
<Button android:id="@+id/like" style="?android:attr/buttonStyleSmall" ... android:text="@string/icon_heart" />
-
내 onCreate 메소드에 글꼴을로드하고 적절한 뷰에 맞게 설정하십시오.
Typeface font = Typeface.createFromAsset( getAssets(), "fontawesome-webfont.ttf" ); ... Button button = (Button)findViewById( R.id.like ); button.setTypeface(font);
답변
IcoMoon 사용해보기 : http://icomoon.io
- 원하는 아이콘을 선택하십시오
- 각 아이콘에 문자 할당
- 폰트 다운로드
재생 아이콘을 선택하고 문자 ‘P’를 할당하고 파일 icomoon.ttf
을 자산 폴더로 다운로드 했다고 가정 해보십시오. 아이콘을 표시하는 방법은 다음과 같습니다.
xml :
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="48sp"
android:text="P" />
자바:
Typeface typeface = Typeface.createFromAsset(getAssets(), "icomoon.ttf");
textView.setTypeface(typeface);
아이콘 글꼴 사용에 대한 설명과 아이콘을 더 예쁘게 만드는 그라디언트 추가에 대한 설명이 포함 된 아름다운 Android 앱을 만드는 방법에 대해 이야기했습니다.
http://www.sqisland.com/talks/beautiful-android
아이콘 글꼴 설명은 슬라이드 34에서 시작합니다.
http://www.sqisland.com/talks/beautiful-android/#34
답변
어쩌면 너무 늦었지만 같은 요구가 있었기 때문에 이것을 게시했습니다 https://github.com/liltof/font-awsome-for-android
Keith Corwin이 말한 것처럼 사용할 수있는 멋진 Android 글꼴 xml 버전입니다.
그것이 다른 사람들을 도울 수 있기를 바랍니다.
답변
위와 같이 훌륭한 예이며 훌륭하게 작동합니다.
Typeface font = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf" );
Button button = (Button)findViewById( R.id.like );
button.setTypeface(font);
그러나! > 이것은 xml에서 설정 한 버튼 안의 문자열 인 경우 작동합니다.
<string name="icon_heart"></string>
button.setText(getString(R.string.icon_heart));
동적으로 추가 해야하는 경우 다음을 사용할 수 있습니다.
String iconHeart = "";
String valHexStr = iconHeart.replace("&#x", "").replace(";", "");
long valLong = Long.parseLong(valHexStr,16);
button.setText((char) valLong + "");
답변
string.xml에 문자열을 추가하지 않고 프로그래밍 방식의 setText를 원할 경우
16 진 코드를 여기에서보십시오 :
http://fortawesome.github.io/Font-Awesome/cheatsheet/
대체 & # xf066; ~ 0xf066
Typeface typeface = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf");
textView.setTypeface(typeface);
textView.setText(new String(new char[]{0xf006 }));
답변
이 목적을 위해 설계된 작고 유용한 라이브러리 가 있습니다 .
dependencies {
compile 'com.shamanland:fonticon:0.1.9'
}
Google Play 데모를 가져 옵니다 .
레이아웃에 글꼴 기반 아이콘을 쉽게 추가 할 수 있습니다.
<com.shamanland.fonticon.FontIconView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ic_android"
android:textSize="@dimen/icon_size"
android:textColor="@color/icon_color"
/>
Drawable
xml에서 와 같이 font-icon을 부 풀릴 수 있습니다 .
<?xml version="1.0" encoding="utf-8"?>
<font-icon
xmlns:android="http://schemas.android.com/apk/res-auto"
android:text="@string/ic_android"
android:textSize="@dimen/big_icon_size"
android:textColor="@color/green_170"
/>
자바 코드 :
Drawable icon = FontIconDrawable.inflate(getResources(), R.xml.ic_android);
연결:
답변
C # (Xamarin) 에서이 도우미 클래스를 프로그래밍 방식으로 텍스트 속성을 설정했습니다. 그것은 나를 위해 아주 잘 작동합니다 :
internal static class FontAwesomeManager
{
private static readonly Typeface AwesomeFont = Typeface.CreateFromAsset(App.Application.Context.Assets, "FontAwesome.ttf");
private static readonly Dictionary<FontAwesomeIcon, string> IconMap = new Dictionary<FontAwesomeIcon, string>
{
{FontAwesomeIcon.Bars, "\uf0c9"},
{FontAwesomeIcon.Calendar, "\uf073"},
{FontAwesomeIcon.Child, "\uf1ae"},
{FontAwesomeIcon.Cog, "\uf013"},
{FontAwesomeIcon.Eye, "\uf06e"},
{FontAwesomeIcon.Filter, "\uf0b0"},
{FontAwesomeIcon.Link, "\uf0c1"},
{FontAwesomeIcon.ListOrderedList, "\uf0cb"},
{FontAwesomeIcon.PencilSquareOutline, "\uf044"},
{FontAwesomeIcon.Picture, "\uf03e"},
{FontAwesomeIcon.PlayCircleOutline, "\uf01d"},
{FontAwesomeIcon.SignOut, "\uf08b"},
{FontAwesomeIcon.Sliders, "\uf1de"}
};
public static void Awesomify(this TextView view, FontAwesomeIcon icon)
{
var iconString = IconMap[icon];
view.Text = iconString;
view.SetTypeface(AwesomeFont, TypefaceStyle.Normal);
}
}
enum FontAwesomeIcon
{
Bars,
Calendar,
Child,
Cog,
Eye,
Filter,
Link,
ListOrderedList,
PencilSquareOutline,
Picture,
PlayCircleOutline,
SignOut,
Sliders
}
Java로 변환하기에 충분히 쉬울 것이라고 생각합니다. 그것이 누군가를 돕기를 바랍니다!