0

リストビュー項目を押したときに、テキストの色とリストビュー項目の背景色を変更したい。ドローアブルセレクターをリストビューに設定し、カラーセレクターテキストビューを設定しました。各セレクターは正常に機能しますが、同時には機能しません。

たとえば、listview を押す > listview セレクターが機能する、textview セレクターが機能しない listview で textview を押す > texview セレクターが機能する、listview セレクターが機能しない

このオプション android:duplicateParentState="true" を使用すると、リストビューでテキストビューを押します >何も起こらず、リストビューとテキストビューの両方のセレクターが機能しません。

誰かが別の良い考えを持っていますか?

これが私のリストビューのレイアウトです。

<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

別のアイデアとして、アイテムが押されたときに、アイテムの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 に答える
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 に答える