我正在尝试更改我的ListView上的字体(颜色和大小)和背景。我想用不在xml上的代码行来改变它。 我的列表视图如下: xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="18sp" android:text="@string/hello">
</TextView>
我的代码是
public class NewsActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ArrayAdapter listItemAdapter = new ArrayAdapter( this,android.R.layout.simple_list_item_1, v_itemList );
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,ynetList));
View v=getListView() ;
ListView lv = getListView();
下一步是什么?请根据我的代码给我一个例子
答案 0 :(得分:31)
您需要创建一个CustomListAdapter。
public class CustomListAdapter extends ArrayAdapter <String> {
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 )
{
text.setTextColor(Color.WHITE);
text.setText(items.get(position));
text.setBackgroundColor(Color.RED);
int color = Color.argb( 200, 255, 64, 64 );
text.setBackgroundColor( color );
}
return mView;
}
}
列表项看起来像这样(custom_list.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:textSize="20px" android:paddingTop="10dip" android:paddingBottom="10dip"/>
</LinearLayout>
使用TextView api来根据自己的喜好来装饰文字
你会像这样使用它
listAdapter = new CustomListAdapter(YourActivity.this , R.layout.custom_list , mList);
mListView.setAdapter(listAdapter);
答案 1 :(得分:7)
创建一个CustomAdapter,并且你有getView()所以如果你想更改listview背景颜色,请使用:
v.setBackgroundColor(Color.CYAN);
如果您想更改textColor,请执行以下操作:
tv.setTextColor(Color.RED);
和textSize:
tv.setTextSize(20);
其中'v'是listview,'tv'是textview
答案 2 :(得分:3)
更好的是,您不需要为列表单元格视图创建单独的android xml布局。你可以使用&#34; android.R.layout.simple_list_item_1&#34;如果列表只包含textview。
private class ExampleAdapter extends ArrayAdapter<String>{
public ExampleAdapter(Context context, int textViewResourceId, String[] objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView tv = (TextView) view.findViewById(android.R.id.text1);
tv.setTextColor(0);
return view;
}
答案 3 :(得分:1)
如果您想设置列表的背景,请将图像放在&lt;的TextView&GT;
< ImageView
android:background="@drawable/image_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
如果您想更改颜色,请将颜色代码放在上面的文本框中,如下所示
android:textColor="#ffffff"
答案 4 :(得分:1)
如果您只需要更改View的某些参数以及ArrayAdapter的默认行为,那么就可以了:
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
public class CustomArrayAdapter<T> extends ArrayAdapter<T> {
public CustomArrayAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
// Here all your customization on the View
view.setBackgroundColor(.......);
...
return view;
}
}
答案 5 :(得分:1)
如果您想使用 colors.xml 中的颜色,请进行试验 :
public View getView(int position, View convertView, ViewGroup parent) {
...
View rowView = inflater.inflate(this.rowLayoutID, parent, false);
rowView.setBackgroundColor(rowView.getResources().getColor(R.color.my_bg_color));
TextView title = (TextView) rowView.findViewById(R.id.txtRowTitle);
title.setTextColor(
rowView.getResources().getColor(R.color.my_title_color));
...
}
您也可以使用:
private static final int bgColor = 0xAAAAFFFF;
public View getView(int position, View convertView, ViewGroup parent) {
...
View rowView = inflater.inflate(this.rowLayoutID, parent, false);
rowView.setBackgroundColor(bgColor);
...
}
答案 6 :(得分:0)
您可以选择像
这样的孩子TextView tv = (TextView)lv.getChildAt(0);
tv.setTextColor(Color.RED);
tv.setTextSize(12);
答案 7 :(得分:0)
在Java代码中使用它们:
color = getResources().getColor(R.color.mycolor);
getResources()
方法返回当前活动的ResourceManager类,getColor()
要求管理员在给定资源ID的情况下查找颜色
答案 8 :(得分:0)
在android 6.0中,您可以更改文本的颜色,如下所示
holder._linear_text_active_release_pass.setBackgroundColor(ContextCompat.getColor(context, R.color.green));