更改AutoCompleteTextView中某些元素的颜色

时间:2013-09-06 17:03:26

标签: android autocompletetextview

我正在使用AutoCompleteTextView并很好地获得建议,我想禁用我能够执行的位置1的TextView

主要问题是我想将位置1的TextView颜色设置为黑色 我已经设置了它的颜色但是当我滚动建议列表时,所有TextView颜色都变为黑色。

下面是我的代码,我已禁用位置1处的textview。

@Override
    public boolean isEnabled(int position) {
        // TODO Auto-generated method stub
        if(getItem(position).contains("Or, did you mean"))
            return false;
        else
        return super.isEnabled(position);
    } 

@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("Or, did you mean..."))
            {
                text.setTextColor(R.color.black);
                text.setText("Or, did you mean");

            }
            else
            {
                text.setText(getItem(position));
            }                
        }

        return mView;
    }

2 个答案:

答案 0 :(得分:0)

我的ListView有问题,我认为这与你的类似。

我的问题是,当我到达ListView的底部时,'position'(在getView中)的值保持恢复为零;所以当我向上滚动ListView时,我从底部的零开始。

我解决了这个问题,强迫我的'View'为空,在你的情况下是mView。

public View getView(int position, View convertView, ViewGroup parent) {

        mView = null;   

        if (convertView == null) {
            LayoutInflater vi = (LayoutInflater)appContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mView = vi.inflate(id, null);
        }
        return mView;
    }

或者如果你知道你可以做的第一个TextView的值:

    final String viewTitleText = ((TextView)mView.findViewById(R.id.textview)).getText().toString();

    if(viewTitleText=="owen") {
       mView.setBackgroundColor(Color.BLACK);
    } else {
       mView.setBackgroundColor(Color.GREEN);
    }

答案 1 :(得分:0)

请参阅我的回答here

我在这里重复我的回答。

使用以下代码更改下拉列表的背景颜色,如

 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;

}
如果您有任何疑问,请告诉我。 : - )