2

ListView をカスタマイズしたいです。list_view のテキストの色を変更しますが、ListView テキストのフォント スタイルを変更できません。テキストにフォント ファミリを提供しますが、フォントに関連する変更は表示されません。

これは私がこれまでに行ったことです...

XML

 <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="40sp"
        android:gravity="center_vertical"
        android:textColor="@color/aqua"
        android:fontFamily="@raw/chocd"
        android:textSize="25sp"
         />

コード

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                                         R.layout.listview_layout,R.id.txt,list1);
listview.setAdapter(adapter);
4

5 に答える 5

4

Android では、XML レイアウトからカスタム フォントを設定することはできません。

TextView textView = (TextView) findViewById(<your TextView ID>);
Typeface typeFace = Typeface.createFromAsset(getAssets(), "<file name>");
tv.setTypeface(typeFace);

setContentView()が呼び出された後にのみ、このコードを実行できることに注意してください。詳しくは.

于 2013-09-05T07:29:55.377 に答える
2

TextView で Roboto-Light フォントを取得し、それぞれのフォントの「.ttf」ファイルをアセットに配置し、これを実行して TextView をその形式に設定するとします。

Typeface robotolight = Typeface.createFromAsset(getAssets(),"Roboto-Light.ttf");
textView.setTypeface(robotolight);

それはうまくいくはずです!

于 2013-09-05T07:35:00.587 に答える
0

カスタム リスト アダプターを使用すると、フォント スタイルと条件付きフォント スタイルを自由に変更できます。

private class CustomListAdapter extends ArrayAdapter{
        private Context mContext;
        private int id;
        private List <String>items ;

        public CustomListAdapter(Context context, int textViewResourceId , List<String> list ) 
        {
            super(context, textViewResourceId, list);           
            mContext = context;
            id = textViewResourceId;
            items = list ;
        }

        @Override
        public View getView(int position, View v, ViewGroup parent)
        {
            View mView = v ;
            if(mView == null){
                LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                mView = vi.inflate(id, null);
            }

            TextView text = (TextView) mView.findViewById(R.id.textView);

            if(items.get(position) != null )
            {
               Typeface typeFace = Typeface.createFromAsset(getAssets(), "<file name>");
tv.setTypeface(typeFace);

            }

            return mView;
        }

    }

次のようにアダプターにアクセスします

CustomListAdapter listAdapter = new CustomListAdapter(YourActivity.this , R.layout.custom_list , mList);
listView.setAdapter(listAdapter);
于 2013-09-05T07:46:27.513 に答える