如何在listview项中设置textview选择器?

时间:2013-02-07 05:26:14

标签: android listview textview selector

当我按下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"/>

3 个答案:

答案 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;
                }
            });

layoutRowListView项目的布局。在您的情况下,您使用了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属性,但它适用于我。