无法单击Listview适配器的按钮

时间:2013-08-22 02:01:04

标签: android android-listview

我正在使用listview的适配器,我的代码,

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:padding="10dp"
        android:background="@android:color/darker_gray"
        android:orientation="vertical" >
        <TextView
            android:id="@+id/tv_position"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textColor="@android:color/white"
            android:text="position1"
            android:textSize="20sp"
            />
        <Button 
            android:id="@+id/btn_like"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="Button"
            />
    </LinearLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:background="@drawable/selector_translate_blue"
        android:clickable="true" //Add this is to allow this to get focus, but the button can not be clicked.
        >
    </RelativeLayout>
</FrameLayout>

当我删除android:clickable =“true”时,可以单击该按钮,但RelativeLayout无法聚焦。   如何实现与Google Plus类似的效果?

更新 现在只能点击RelativeLayout。 我的意思是如何使Button也可以点击? 不要同时点击两个。

2 个答案:

答案 0 :(得分:0)

您是否尝试将android:focusable =“true”或android:focusableInTouchMode =“true”添加到您的relativelayout?

答案 1 :(得分:0)

尝试将android:focusableandroid:focusableInTouchMode设置为false到您的按钮:

<Button 
            android:id="@+id/btn_like"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="Button"
            android:focusable="false"
            android:focusableInTouchMode="false"
            />

<强>更新 您需要将Button android:focusable设置为false以及RelativeLayout。另外,您需要为selectorButton设置RelativeLayout 这里:

<Button
        android:id="@+id/btn_like"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:background="@drawable/selector"/>

在这里:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:background="@drawable/selector_translate_blue"
        android:background="@drawable/selector_ll"
        android:focusable="false" >

重要的是,在那些selector中,android:state_pressed,您需要添加更多android:state_focused,这样,当项目点击时,{Button 1}}和RelativeLayout无法获得focusable,因此不会触发此状态:

selector.xml:

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

selector_ll.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:state_focused="true"
          android:drawable="@android:color/darker_gray"/> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@android:color/darker_gray"/> <!-- focused -->
    <item android:drawable="@android:color/white"/> <!-- default -->
</selector>

希望这有帮助。