如何在android 2.2中设置malayalam字体(印度本地语言)的textview

时间:2013-04-24 11:30:27

标签: android text

我需要在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设备呈现它?任何帮助将不胜感激。

4 个答案:

答案 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("फूल");  

很有可能它无法正确渲染字体。 我希望这有帮助。 :)