如何在ListView上更改颜色和字体

Vit*_*sky 21 fonts android listview

我正在尝试更改我的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>
Run Code Online (Sandbox Code Playgroud)

我的代码是

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();
Run Code Online (Sandbox Code Playgroud)

接下来是什么?请根据我的代码给我一个例子

Ren*_*eno 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;
    }

}
Run Code Online (Sandbox Code Playgroud)

列表项看起来像这样(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>
Run Code Online (Sandbox Code Playgroud)

使用TextView api来根据自己的喜好来装饰文本

你会像这样使用它

listAdapter = new CustomListAdapter(YourActivity.this , R.layout.custom_list , mList);
mListView.setAdapter(listAdapter);
Run Code Online (Sandbox Code Playgroud)


Lav*_*nya 7

创建一个CustomAdapter,并且你有getView(),所以如果你想改变listview背景颜色,请使用:

v.setBackgroundColor(Color.CYAN);
Run Code Online (Sandbox Code Playgroud)

如果要更改textColor,请执行以下操作:

tv.setTextColor(Color.RED);
Run Code Online (Sandbox Code Playgroud)

并为textSize:

tv.setTextSize(20);
Run Code Online (Sandbox Code Playgroud)

其中'v'是列表视图,'tv'是textview