Wie man Farbe und Schriftart in ListView ändert

Ich versuche meine Schriftart (Farbe und Größe) und den Hintergrund auf meinem ListView zu ändern. Ich möchte es mit Codezeilen nicht auf XML ändern. Meine Listenansicht sieht folgendermaßen aus: das xml:

   

und mein Code ist

 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(this, R.layout.list_item,ynetList)); View v=getListView() ; ListView lv = getListView(); 

was als nächstes? Bitte geben Sie mir ein Beispiel für meinen Code

Sie müssen einen CustomListAdapter erstellen.

 public class CustomListAdapter extends ArrayAdapter  { private Context mContext; private int id; private List items ; public CustomListAdapter(Context context, int textViewResourceId , List 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; } } 

Das Listenelement sieht folgendermaßen aus (custom_list.xml):

 < ?xml version="1.0" encoding="utf-8"?>    

Verwenden Sie die TextView APIs, um Ihren Text nach Ihren Wünschen zu dekorieren

und du wirst es so benutzen

 listAdapter = new CustomListAdapter(YourActivity.this , R.layout.custom_list , mList); mListView.setAdapter(listAdapter); 

Erstellen Sie einen CustomAdapter und Sie haben die getView () so dort, wenn Sie die Listview Hintergrundfarbe ändern möchten:

 v.setBackgroundColor(Color.CYAN); 

Wenn Sie die textColor ändern möchten, dann tun Sie dies:

 tv.setTextColor(Color.RED); 

und für die textSize:

 tv.setTextSize(20); 

Wobei “v” die Listenansicht und “tv” die Textansicht ist

Noch besser, Sie müssen kein separates Android-XML-Layout für die Listenzellenansicht erstellen. Sie können einfach “android.R.layout.simple_list_item_1” verwenden, wenn die Liste nur textview enthält.

 private class ExampleAdapter extends ArrayAdapter{ 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; } 

Wenn Sie den Hintergrund der Liste festlegen möchten, platzieren Sie das Bild vor

 < ImageView android:background="@drawable/image_name" android:layout_width="fill_parent" android:layout_height="wrap_content"/> 

und wenn du die Farbe ändern willst, setze den Farbcode so über die Textbox

  android:textColor="#ffffff" 

Wenn Sie nur einige Parameter der Ansicht und das Standardverhalten von ArrayAdapter ändern müssen, ist dies für Sie OK:

  import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; public class CustomArrayAdapter extends ArrayAdapter { 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; } } 

Wenn Sie eine Farbe aus colors.xml verwenden möchten, führen Sie Folgendes durch:

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

Sie können auch verwenden:

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

Sie können ein Kind wie auswählen

 TextView tv = (TextView)lv.getChildAt(0); tv.setTextColor(Color.RED); tv.setTextSize(12); 

verwende sie in Java-Code wie folgt:

  color = getResources().getColor(R.color.mycolor); 

Die Methode getResources() gibt die ResourceManager-class für die aktuelle Aktivität zurück, und getColor() fordert den Manager auf, bei einer Ressourcen-ID eine Farbe getColor()

In Android 6.0 können Sie die Farbe des Textes wie unten ändern

 holder._linear_text_active_release_pass.setBackgroundColor(ContextCompat.getColor(context, R.color.green));