0

当我按下列表视图项目时,我想更改文本颜色和列表视图项目的背景颜色。我将可绘制选择器设置为列表视图并设置颜色选择器文本视图。每个选择器都可以正常工作,但不能同时工作。

例如,按 listview > listview 选择器工作,textview 选择器不工作按 textview 在 listview > texview 选择器工作,listview 选择器不工作

当我使用此选项 android:duplicateParentState="true" 在 listview 中按 textview > 没有发生任何事情时,listview 和 textview 选择器都不起作用。

有没有人有另一个好主意?

这是我的列表视图布局。

<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"/>

4

3 回答 3

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));
}
});                          
于 2013-02-07T05:52:06.827 回答
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.

于 2013-02-07T06:55:19.490 回答
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指南没有提到state_activated属性,但它对我有用。

于 2013-10-23T18:12:43.697 回答