我想自定义我的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);
答案 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);