我正在使用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事件当前正在成功运行。
我的问题是:
有没有办法当我从列表中选择一个项目时,它可以改变文本的颜色? (仅限选定项目)
由于
答案 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"