我需要在malayalam字体中显示TextView
,这是一种印度本地语言。为此,我尝试下面的代码
Typeface custom_typerface = Typeface.createFromAsset(getAssets(), "fonts/AnjaliNewLipi.ttf");
TextView mytext = (TextView)findViewById(R.id.mytext);
mytext.setTypeface(custom_typerface);
mytext.setText("മലയാള ഭാഷ തന് ഭാവ ശുദ്ധി...");
这在4.2设备上正确显示,但在所有设备中均未显示。如何为所有Android设备呈现它?任何帮助将不胜感激。
答案 0 :(得分:2)
上面的代码是正确的,它应该显示Malayalam字体。但是有一个问题!如果你的手机不支持该字体,它就不会显示马拉雅拉姆语,但会显示一些方框。
如果您使用任何文件浏览器并查看系统/系统/字体 - 您将看到设备支持的所有字体。
如果你想添加新字体,你也可以这样做,但设备必须扎根。 许多便宜的手机只支持少量字体,但昂贵的手机支持许多字体。
答案 1 :(得分:0)
经过长时间的搜索,我终于找到了答案。 我通过用Ascii替换每个Unicode字符,将Unicode字体转换为Ascii。 这是神奇的代码
mytext.replaceAll("oldChar", "newChar");
对每个单个字符使用此代码。 :)
答案 2 :(得分:0)
将自定义字体设置为TextView。
你有两种方法,首先看第一种方式:
1. 将您的字体文件添加到资源文件夹,如果不存在,则将资源文件夹创建为。
2。创建CustomTypeface类,例如:
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Typeface;
public class CustomTypeface {
private static Typeface typefaseArialCondIt;
private static Typeface typefaseArialBold;
private static Typeface typefaseArialRegular;
public CustomTypeface() {
}
public CustomTypeface(Context context) {
AssetManager assets = context.getAssets();
CustomTypeface.typefaseArialCondIt = Typeface.createFromAsset(assets, "fonts/ArialCondIt.otf");
CustomTypeface.typefaseArialBold = Typeface.createFromAsset(assets, "fonts/ArialBold.otf");
CustomTypeface.typefaseArialRegular = Typeface.createFromAsset(assets, "fonts/ArialRegular.otf");
}
public static Typeface gettypefaseArialCondIt() {
return typefaseArialCondIt;
}
public static Typeface settypefaseArialCondIt(Typeface typefaseArialCondIt) {
return CustomTypeface.typefaseArialCondIt = typefaseArialCondIt;;
}
public static Typeface gettypefaseArialBold() {
return typefaseArialBold;
}
public static Typeface settypefaseArialBold(Typeface typefaseArialBold) {
return CustomTypeface.typefaseArialBold = typefaseArialBold;;
}
public static Typeface gettypefaseArialRegular() {
return typefaseArialRegular;
}
public static void settypefaseArialRegular(Typeface typefaseArialRegular) {
CustomTypeface.typefaseArialRegular = typefaseArialRegular;
}
}
3. 并将自定义字体设置为TextView:
TextView yourTextView = (TextView) findViewById(R.id.textView1);
yourTextView.setTypeface(CustomTypeface.gettypefaseArialRegular);
或者第二种方式,使用您的字体创建自定义TextView:
import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;
public class ArialTextView extends TextView {
public ArialTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ArialTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ArialTextView(Context context) {
super(context);
}
@Override
public void setTypeface(Typeface tf, int style) {
if (style == Typeface.BOLD) {
setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/ArialBold.otf"));
} else if (style == Typeface.NORMAL) {
setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/ArialRegular.otf"));
} else if (style == Typeface.ITALIC) {
setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/ArialCondIt.otf"));
}
}
}
在布局xml中,您可以创建自定义TextView,例如:
<com.your.package.ArialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="TextView with your custom font"/>
答案 3 :(得分:0)
我不确定这可能适用于您的情况,但我使用旁遮普语字体。我所做的不是复制或将文本输入到字符串中然后使用字体。你当然确实使用了字体,但为了使它正常工作,你需要在音译中输入马拉雅拉姆语文本,如下面的印地语例子,因为我不知道马拉雅拉姆语。
PUL
Typeface custom_typerface = Typeface.createFromAsset(getAssets(), "fonts/AnjaliNewLipi.ttf");
TextView mytext = (TextView)findViewById(R.id.mytext);
mytext.setTypeface(custom_typerface);
mytext.setText("PUl"); //Assuming you know Hindi PUl in hindi is फूल
如果您只是输入
,这将以正确的格式显示文本而没有任何问题mytext.setText("फूल");
很有可能它无法正确渲染字体。 我希望这有帮助。 :)