当我按下listview项目时,我想更改textiew颜色和listview项目的背景颜色。 我将drawable选择器设置为listview并设置颜色选择器textview。每个选择器工作正常但不能同时工作。
例如,press listview> listview选择器工作,textview选择器不起作用 在listview中按textview> texview selctor工作,列表视图选择器不起作用
当我使用此选项时android:duplicateParentState =“true” 在listview中按textview>什么都没发生,listview和textview selecetor都不起作用。
有没有人有另一个好主意?
这是我的listview布局。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="64dp"
android:layout_margin="2dp"
android:background="@drawable/list_selector" >
<TextView
android:id="@+id/title"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_gravity="left|center_vertical"
android:ellipsize="end"
android:textColor="@color/color_list_selector"
android:textSize="22dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/image"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="right|center_vertical"
android:layout_marginBottom="16dp"
android:layout_marginTop="16dp"
android:src="@drawable/image" />
<TextView
android:id="@+id/title"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:textSize="22dip" />
</LinearLayout>
和我的颜色选择器
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/clr_black"/>
<item android:state_focused="true" android:color="@color/clr_black"/>
<item android:state_pressed="true" android:color="@color/clr_blackt"/>
<item android:color="@color/clr_yellow"/>
答案 0 :(得分:0)
listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView <? > adapterView, View view, int position, long id) { TextView textView = (TextView) view.findViewById(R.id.textView); textView.setBackgroundDrawable(getResources().getSystem().getDrawable(R.drawable.selector)); } });
答案 1 :(得分:0)
另一个想法是,当按下项目时,您可以动态更改TextView
的颜色和ListView
项目的背景颜色。
在您的自定义ListView
layoutRow.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
// TODO Auto-generated method stub
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
// Change the TextView color
// Change the ListView item's background color
return true;
case MotionEvent.ACTION_UP:
// Reset the TextView color
// Reset the ListView item's background color
return true;
}
return false;
}
});
layoutRow
是ListView
项目的布局。在您的情况下,您使用了FrameLayout
。
答案 2 :(得分:0)
我不确定我是否正确理解你的问题。
尝试使用textColor的颜色状态列表
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#fff"/>
<item android:state_activated="true" android:color="#fff"/>
<item android:color="#000" />
</selector>
Android guide未提及state_activated
属性,但它适用于我。