it-swarm.com.de

So ändern Sie Farbe und Schriftart in ListView

Ich versuche, meine Schriftart (Farbe und Größe) und den Hintergrund auf meiner ListView zu ändern. Ich möchte es mit Codezeilen ändern, nicht in xml . Meine Listenansicht sieht folgendermaßen aus: die 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>

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<String>(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

20

Sie müssen einen CustomListAdapter erstellen. 

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

}

Das Listenelement sieht folgendermaßen aus (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>

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

und du wirst es so benutzen 

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

Erstellen Sie einen CustomAdapter, und Sie haben getView (). Wenn Sie also die Hintergrundfarbe der Listenansicht ändern möchten, verwenden Sie Folgendes: 

v.setBackgroundColor(Color.CYAN);

Wenn Sie die textColor ändern möchten, gehen Sie folgendermaßen vor:

tv.setTextColor(Color.RED);

und für die textSize: 

tv.setTextSize(20);

dabei ist 'v' die Listenansicht und 'tv' die Textansicht

7
Lavanya

Besser noch, Sie müssen kein separates Android-XML-Layout für die Listenzellansicht erstellen. Sie können einfach "Android.R.layout.simple_list_item_1" verwenden, wenn die Liste nur Textansicht enthält.

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
Lei Zhang

Wenn Sie eine Farbe aus colors.xml verwenden möchten, experimentieren Sie mit :

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

Wenn Sie den Hintergrund der Liste einstellen möchten, platzieren Sie das Bild vor der <Textansicht>

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

und wenn Sie die Farbe ändern möchten, setzen Sie den Farbcode wie oben auf das Textfeld

 Android:textColor="#ffffff"
1
Newts

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

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


 }
1
Miguel Rivero

Sie können ein Kind gerne auswählen

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

in Android 6.0 können Sie die Farbe des Texts wie folgt ändern

holder._linear_text_active_release_pass.setBackgroundColor(ContextCompat.getColor(context, R.color.green));
0
koteswara D K

verwenden Sie sie in Java-Code wie folgt:

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

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

0
Swap925215