Android:如何使用选择器?

时间:2014-07-23 08:08:46

标签: android selector

我有使用选择器的问题,它不能像我期望的那样工作。我想点击它,然后它给我反应,我选择它(通过长按,但我可能通过编程方式),然后它给了我另一个反应。但是,它对结果没有任何反应......

反应部分:

 <TableRow
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:weightSum="10"
                    android:padding="5dp"
                    android:background="@drawable/border_bottom"
                    >
                    <LinearLayout 
                        android:layout_weight="9"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:background="@drawable/selector_row">
                        <TextView 
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textColor="@color/grey"
                            android:text="@string/tel"/>
                        <TextView 
                            android:id="@+id/telText"
                            android:layout_width="wrap_content"
                            android:textSize="18sp"
                            android:layout_height="wrap_content"
                            android:text="@string/blank"/>
                    </LinearLayout>
                    <ImageButton
                        android:layout_weight="1"
                        android:id="@+id/tel_call"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:src="@drawable/ic_action_call"
                        android:background="@drawable/border_left"/>                    
                </TableRow>

selector_row.xml:

 <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item 
        android:state_pressed="true"
        android:drawable="@color/semitransparent_grey"></item>
    <item 
        android:state_selected="true"
        android:drawable="@color/semitransparent_blue"></item>
    <item 
        android:drawable="@color/transparent"></item>
    </selector>

3 个答案:

答案 0 :(得分:1)

创建XML文件并将其放在drawable文件夹中。打开它并编写以下代码:

<selector
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <item 
        android:drawable="YOUR IMAGE OR COLOR"

         android:state_pressed="true"/>
    <item
        android:drawable="YOUR IMAGE OR COLOR"

          android:state_selected="true"/>
    <item
        android:drawable="YOUR IMAGE OR COLOR"

           android:state_focused="true"/>

</selector>

然后在您的主XML文件中,放置android:background="@drawable/selector.xml"

答案 1 :(得分:1)

感谢所有兄弟们努力回答我。我得到了答案....只需在LinearLayout设置android:clickable =“true”即可。哈,这很傻.....

我记得有人提供相关信息,但我忽略了......对不起他。

答案 2 :(得分:0)

你在期待什么?只有在点击时才会有反应?

尝试删除删除:

android:state_selected="true" 

修改 这应该是你的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/my_drawable" android:state_selected="true"></item>
    <item android:drawable="@drawable/my_drawable" android:state_pressed="true"></item>
    <item android:drawable="@drawable/my_drawable"></item>

</selector>

您遇到的行为是什么?

修改

<LinearLayout 
     android:layout_weight="9"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical"
     android:background="@drawable/selector_row"
     android:duplicateParentState=true>

我不知道它是否真正解决了问题