6

のドロップダウンメニューでテキストの色を変更するにはどうすればよいAutoCompleteTextViewですか? または、ドロップダウンの背景色を変更するにはどうすればよいですか。デフォルトでは、ドロップダウンの背景色は白です。

4

4 に答える 4

13

このためのカスタムアダプタークラスを作成する必要があり、textview をこのように設定できます。

autoAdapter = new AutoAdapter(this, R.layout.autocompletelistview_test1,
            edittext);    

ここに autocompletelistview_test1 があります

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" 
android:layout_height="wrap_content">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="44dip"
android:gravity="center_vertical"

android:singleLine="true"
android:ellipsize="end"
android:layout_marginRight="12dip"
android:textStyle="bold"
android:textColor="#cc3333"
android:id="@+id/textview"
android:textSize="14sp" />

次のコードを使用して、ドロップダウンの背景色を次のように変更します

 autocomplete.setDropDownBackgroundResource(R.color.autocompletet_background_color);  

string.xml でこのような値を設定できます

   <color name="autocompletet_background_color">#EFEFEF</color>    

ドロップダウン項目のテキストの色を変更したい場合は、次のようにします。

アダプタークラスで。

 @Override
public View getView(int position, View v, ViewGroup parent)
{
    View mView = v ;
    if(mView == null){
        LayoutInflater vi = (LayoutInflater)appContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = vi.inflate(id, null);
    }
    TextView text = (TextView) mView.findViewById(R.id.textview);        
    if(getItem(position) != null )
    {
        text.setTypeface(faceBold);
        if(getItem(position).equals("check some condition if you want. "))
        {
            text.setTextColor(Color.parseColor("#999999"));
            text.setText("set some text");               
        }           
        else
        {
            text.setTextColor(Color.parseColor("#cc3333"));
                text.setText(getItem(position));
        }           
    }
    return mView;
}    

ご不明な点がございましたら、お知らせください。

于 2013-12-26T14:10:51.693 に答える
4

テキストの色を変更するのは難しいかもしれませんが。ドロップダウンメニューの背景色を簡単に変更

AutoCompleteTextView searchView = ... 
searchView.setDropDownBackgroundDrawable(new ColorDrawable(context.getResources().getColor(R.color.colorId)));
于 2015-05-27T18:39:46.250 に答える
0

実際には、デフォルトでオートコンプリート textView の色を直接変更することはできません。代わりに、そのようなカスタムアダプターを実装し、通常はアダプターからビューを膨らませる必要があります textView. あなたの問題を解決するのに役立つこの質問を参照してください。したがって、必要に応じてプロパティをテキストビューに設定できます。たとえば、以下のようなカスタムアダプターが必要です

public class MyCustomBrandAdapter extends ArrayAdapter<Brand>{


List<Brand> Brandlist;
Context context;
private ArrayList<Brand> itemsAll;
private ArrayList<Brand> suggestions;
public MyCustomBrandAdapter(Context context, int textViewResourceId, List<Brand> Brandlist) 
{
    
    super(context,  textViewResourceId, Brandlist);
    this.Brandlist =  Brandlist;
    this.itemsAll = (ArrayList<Brand>) ((ArrayList<Brand>) Brandlist).clone();
    this.suggestions = new ArrayList<Brand>();
    this.context = context;
}


public View getView(int position, View convertView, ViewGroup parent) 
{
    View v = convertView;
    if (v == null) {
        LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.listview, null);

    }
    Brand Brand = Brandlist.get(position);
    if (Brand != null) {
        TextView tt = (TextView) v.findViewById(R.id.txtName);
        
        if (tt != null) {
            tt.setText(Brandlist.get(position).toString());
        } else {
            System.out.println("Not getting textview..");
        }
    
    }
    return v;
}
 @Override
    public Filter getFilter() {
        return nameFilter;
    }

    Filter nameFilter = new Filter() {
        public String convertResultToString(Object resultValue) {
            String str = ((Brand)(resultValue)).getBrandDescription1(); 
            return str;
        }
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            if(constraint != null) {
                suggestions.clear();
                for (Brand brand : itemsAll) {
                    if(brand.getBrandDescription1().toLowerCase().startsWith(constraint.toString().toLowerCase())){
                        suggestions.add(brand);
                    }
                }
                FilterResults filterResults = new FilterResults();
                filterResults.values = suggestions;
                filterResults.count = suggestions.size();
                return filterResults;
            } else {
                return new FilterResults();
            }
        }
        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            ArrayList<Brand> filteredList = (ArrayList<Brand>) results.values;
            List<Brand> getResult=new ArrayList<Brand>();
            if(results != null && results.count > 0) {
                clear();
                for (Brand c : filteredList) {
                    getResult.add(c);
                }
                Iterator<Brand> brandIterator=getResult.iterator();
                while(brandIterator.hasNext()){
                    Brand party=brandIterator.next();
                    add(party);
                }
                notifyDataSetChanged();
            }
        }
    };
    
}

このレイアウトの R.layout.listview xml は次のとおりです。

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#ffffff" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/txtName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textColor="#000000" 
            android:textSize="12dp"/>

    </LinearLayout>

</LinearLayout>

ここでは、このxmlで. 背景を白に設定しましたが(android:background="#ffffff")、テキストを黒 (android:textColor="#000000")にしてサイズを(android:textSize="12dp")変更したい..今でははっきりとわかると思います。

于 2012-10-13T20:56:05.490 に答える