我们如何在ListView中为文本提供字体样式

时间:2013-09-05 07:22:26

标签: android eclipse android-listview

我想自定义我的ListView.I更改list_view中文本的颜色,但我无法更改ListView text.i的字体样式。文本系列提供字体系列,但它没有显示任何与字体。

这是我到目前为止所做的......

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);

5 个答案:

答案 0 :(得分:4)

您可以使用它来更改为不同的内置字体,在布局XML中使用 android:typeface 或在Java中使用 setTypeface()

Typeface type = Typeface.createFromAsset(getAssets(),""); 
   txtyour.setTypeface(type);

答案 1 :(得分:4)

Android不允许您从XML布局设置自定义字体。

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

请注意,您只能在调用setContentView()后运行此代码。 For more information

答案 2 :(得分:2)

假设您想在TextView上获取Roboto-Light字体,将相应字体的“.ttf”文件放在资源中,并执行此操作以将TextView设置为该格式:

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

这应该有用!

答案 3 :(得分:1)

您可以创建自己的textview并在任何地方使用它。如果你可以在其他地方使用相同的字体,你肯定应该这样使用它。

public class TextViewLight extends TextView {

    public TextViewLight(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public TextViewLight(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public TextViewLight(Context context) {
        super(context);
        init();
    }

    private void init() {
        Typeface tf = Typeface.createFromAsset(getContext().getAssets(),"fonts/opensans_light.ttf");
        setTypeface(tf);
    }

}

你可以在xml中使用这个textview。

<com.predict.android.views.TextViewLight
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/settings"/>

而且你应该将你的字体存储在assets文件夹中。因此,在资产中创建一个文件夹“fonts”并将其保留在那里。

如果您使用自定义类作为浅色,粗体,斜体字体,当您需要更改整个应用程序的字体时,您只需要在自定义textview类中更改一行。在几秒钟内以不同的字体样式查看应用程序非常实用。

答案 4 :(得分: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);