2013-08-22 3 views
0

Я использую адаптер 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> 

Когда я удалить андроид: кликабельно = «истина», кнопка может быть нажата, но RelativeLayout не сфокусирована. Как добиться такого же эффекта, как Google Plus?

ОБНОВЛЕНИЕ Теперь можно щелкнуть только RelativeLayout. Я имею в виду, как сделать кнопку также можно щелкнуть? Не нажимайте на них два одновременно.

ответ

0

Попробуйте установить android:focusable и android: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" 
      /> 

UPDATE Вы должны установить ваш Buttonandroid:focusable в false, а также RelativeLayout. Кроме того, вы должны иметь selector для вашего как Button и 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 и 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> 

Надеется, что это помогает.

+0

Спасибо. Не используйте ах ..., я хочу, чтобы кнопки и RelativeLayout можно было щелкнуть. – fatsoon

+0

@tenpage Посмотрите, как ваш 'LinearLayout' перекрывает ваш' RelativeLayout', поэтому вы не можете коснуться 'RelativeLayout', передать событие' onClick' от вашего 'LinearLayout' до' RelativeLayout'. См. Мое обновление. Ура! – user2652394

+0

Извините, мои ошибки выражены. – fatsoon

0

Вы пробовали добавить андроид: focusable = "true" или андроид: focusableInTouchMode = "true" для вашего релятивирования?

+0

Да, я пробовал, но RelativeLayout не может сфокусироваться. – fatsoon

Смежные вопросы