2016-02-23 2 views
1

Я сделал пользовательский флажок XML следующим образом:Pass прикасается к ребенку в XML

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/checkbox_selected_glow" android:state_focused="true" android:state_pressed="true" android:state_checked="true"/> 
    <item android:drawable="@drawable/checkbox_selected_glow" android:state_focused="false" android:state_pressed="true" android:state_checked="true"/> 
    <item android:drawable="@drawable/checkbox_selected" android:state_focused="false" android:state_pressed="false" android:state_checked="true"/> 
    <item android:drawable="@drawable/checkbox_deselected_glow" android:state_focused="true" android:state_pressed="true" android:state_checked="false"/> 
    <item android:drawable="@drawable/checkbox_deselected_glow" android:state_focused="false" android:state_pressed="true" android:state_checked="false"/> 
    <item android:drawable="@drawable/checkbox_deselected" android:state_focused="false" android:state_pressed="false" android:state_checked="false"/> 
</selector> 

И внедрение в макете:

<CheckBox 
     android:layout_width="30dp" 
     android:layout_height="30dp" 
     android:layout_gravity="center_vertical" 
     android:paddingRight="10dp" 
     android:button="@null" 
     android:background="@drawable/custom_checkbox"/> 

Он хорошо работает и реагирует на пользователя касаясь его прохождения в нажатом состоянии, когда пользователь прикасается к нему и к выбранному/отмененному состоянию всякий раз, когда пользователь отпускает касание.

Этот CheckBox связан с некоторым текстом в TextView, и оба они содержатся в LinnearLayout.

Я хочу, чтобы нажатое состояние CheckBox активировалось всякий раз, когда пользователь нажимает в любом месте LinnearLayout.

Есть ли способ только для xml?

Если нет, то какие методы я должен переопределить на LinnearLayout, чтобы программно заставить CheckBox реагировать на касания на любой части LinnearLayout?

ответ

0

вы можете попробовать что-то вроде этого:

 LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.linearLayout); 
     final CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox); 
     linearLayout.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       checkBox.onTouchEvent(event); 
       return true; 
      } 
     }); 
Смежные вопросы