有没有办法在选择ListView时更改项目的文本颜色?

时间:2017-06-22 18:41:15

标签: android listview

我正在使用Android Studio。

我有一个活动,可以创建一个项目列表,如下所示:

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_listado_categorias);
        inicializarControles();
        ....
    }

其中:

private void inicializarControles() 
{
...       
  m_itemCategoria = new ArrayAdapter<>(this, R.layout.act_item_listview);
  m_lvwCategorias = (ListView) findViewById(R.id.lvwCategorias);
        
  m_lvwCategorias.setAdapter(m_itemCategoria);                        
  
  
  m_lvwCategorias.setOnItemClickListener(onItemCategoriaListViewOnClickListener);
m_lvwCategorias.setOnItemLongClickListener(onItemCategoriaListViewOnItemLongClickListener);
  
        
  m_lvwCategorias.setOnDragListener(onItemCategoriaListViewOnDragListener);
....
}

onDragListener事件当前正在成功运行。

我的问题是:

有没有办法当我从列表中选择一个项目时,它可以改变文本的颜色? (仅限选定项目)

由于

3 个答案:

答案 0 :(得分:0)

您需要将子视图设置为:

android:duplicateParentState="true"

现在,您可以使用这些方法使用选择器声明TextViews的颜色,例如:

android:textColor="@drawable/my_row_selector"

我确定你知道,但选择器可以简单:

  <?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" android:color="@color/white" />
  <item android:color="@color/black" />
  </selector>

如您所见,允许使用@color值。另外 - android:state_pressed与AdapterView.OnItemClickListener一起使用。希望这会有所帮助。

或者你可以试试这个,

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView <? > adapterView, View rowView,
int position, long id) {
    TextView textView = (TextView) rowView.findViewById(R.id.rowListTextView);

    textView.setTextColor("Desired Color");

}

});

答案 1 :(得分:0)

是。通过使用颜色选择器。

在app app项目的res文件夹下,创建一个名为color的目录。在此颜色目录中添加XML文件(例如,color_selector.xml)。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:color="@color/COLOR_WHEN_PRESSED" />
    <item android:color="@color/COLOR_NORMALLY" />
</selector>

您的color_selector.xml应如下所示。

然后在您声明包含文本的视图的xml文件中。将android:textColor属性设置为此选择器。像这样:

android:textColor="@color/color_selector"

您也可以通过以下方式以编程方式声明textColor:

    TextView text;
    text.setTextColor(getResources().getColorStateList(R.color.choose_alarm_color_selector));

答案 2 :(得分:0)

在drawable文件夹中创建一个颜色选择器文件,让我们说出它的名字&#34; text_selector.xml&#34;,然后将此代码粘贴到该文件中:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true"
       android:color="#000000" /> <!-- pressed -->
 <item android:state_focused="true"
       android:color="#000000" /> <!-- focused -->
 <item android:color="#FFFFFF" /> <!-- default -->
</selector>

现在,您只需在&#34; act_item_listview.xml&#34;中设置textview的颜色即可。这个选择器文件的文件如下:

在textview对象中定义属性:

android:textColor="@drawable/text_selector"