2

私の問題は、android.I のカスタム リストビューでヒンディー語のフォントを変更する方法です。このコードを使用しています。// ListView に menuItems を追加する

        ListAdapter adapter = new SimpleAdapter(this, menuItems,
                R.layout.list_item,
                new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
                        R.id.name, R.id.desciption, R.id.cost });
        // Typeface tf = Typeface.createFromAsset(getAssets(),   "fonts/DroidHindi.ttf");

        setListAdapter(adapter);

        // selecting single ListView item
        ListView lv = getListView();

私を助けてください。前もって感謝します!!!!!!!!!

getView メソッドをオーバーライドしていますが、機能しません。助けてください。

4

2 に答える 2

2

ヒンディー語のTrueTypeフォントファイルをアセットフォルダに入れます

カスタムアダプタを作成します

public class MyArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] values;

    public MyArrayAdapter(Context context, String[] values) {
        super(context, R.layout.list_mobile, values);
        this.context = context;
        this.values = values;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.list_mobile, parent, false);

        TextView textView = (TextView) rowView.findViewById(R.id.label);

        //here use your true type font of hindi like this hindiFonts.ttf is placed inside asset/fonts/ folder of project
        Typeface face=Typeface.createFromAsset(getAssets(), "fonts/hindiFonts.ttf"); 
        textView .setTypeface(face); 
        textView.setText(values[position]);


        return rowView;
    }
}

リストビューでカスタムアダプタの上に設定

String[] MOBILE_OS = 
               new String[] { "Android", "iOS", "WindowsMobile", "Blackberry"};


        myListView.setListAdapter(new MyArrayAdapter(this, MOBILE_OS));
于 2012-10-08T08:59:07.050 に答える
1

以下のように、SimpleAdapter クラスの getView メソッドをオーバーライドし、フォントを変更したいテキストビューにフォントを設定します。

ListAdapter adapter = new SimpleAdapter(this, menuItems,
                R.layout.list_item,
                new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
                        R.id.name, R.id.desciption, R.id.cost }){

 public View getView(View view)
{
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
    Typeface hindiFont=Typeface.createFromAsset(getAssets(),"fonts/DroidHindi.ttf"); 
    LinearLayout llMain=(LinearLayout)inflater.inflate(R.layout.list_item, null);
    TextView txtName=(TextView)llMain.findViewById(R.id.name);
    txtName.setTypeface(hindiFont); 
    TextView txtDescription=(TextView)llMain.findViewById(R.id.desciption);
    txtDescription.setTypeface(hindiFont);
    return llMain;
}
};
于 2012-10-08T08:49:50.263 に答える