0

我正在使用 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。我的意思是如何使按钮也可以被点击?不要同时单击它们两个。

4

2 回答 2

0

您是否尝试将 android:focusable="true" 或 android:focusableInTouchMode="true" 添加到您的相对布局中?

于 2013-08-22T02:21:08.247 回答
0

尝试设置android:focusableandroid:focusableInTouchModefalse您的按钮:

<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:focusableasfalseRelativeLayout. 另外,你需要一个selector适合你的ButtonRelativeLayout 这里:

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

而这里很重要的是,在那些selectors 中android:state_pressed,你需要添加更多的android:state_focused,这样当 item 点击的时候,ButtonRelativeLayout不能得到focusable,所以它不会触发这个状态:

选择器.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>

选择器_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>

希望这可以帮助。

于 2013-08-22T02:50:27.270 回答