2016-07-12 10 views
0

私は、相対レイアウト内のチェックボックスを使ってレイアウトを設計しようとしています。相対レイアウトはクリック可能で、想定通りに機能しますが、チェックボックスをクリックすると、チェックボックスコードと相対ビューコードが実行されます。Clickable相対レイアウトのチェックボックスをクリックする

チェックボックスの実行中に相対レイアウトのOnClickListenerを無視することはありますか?

RelativeLayout holder = new RelativeLayout(context); 
contactHolder.setId(View.generateViewId()); 

TextView name = new TextView(context); 
final CheckBox checkBox = new CheckBox(context); 

checkBox.setId(View.generateViewId()); 

name.setText(contact.getName()); 
name.setId(View.generateViewId()); 

holder.addView(name); 
holder.addView(checkBox); 

checkBox.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!checkBox.isChecked()) { 
       checkBox.setChecked(true); 
      } 
      else if (checkBox.isChecked()){ 
       checkBox.setChecked(false); 
      } 
     } 
    }); 

holder.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (!checkBox.isChecked()) { 
      checkBox.setChecked(true); 
     } 
     else if (checkBox.isChecked()){ 
      checkBox.setChecked(false); 
     } 
    } 
}); 
userView.addView(holder); 
} 
+0

レイアウトコードを投稿できますか?リスナーを相対レイアウトに置くことは、とても良い考えのようには思えません。おそらくそれを行うより良い方法があります。 –

+0

@WillEvers相対レイアウトの全領域をクリック可能にしたいので、そこに 'OnClickListener'を設定し、checkBoxのdoubleトグルを除いて動作します。 –

答えて

0

Relativelayout

android:clickable="true" 
+0

相対レイアウトは既にクリック可能なので、そこに問題がある。チェックボックスと相対ビューは、チェックボックスをクリックすると両方がクリックされるので、チェックボックスを1回クリックするだけで2回切り替えられます。 –

0

での使用にこれをチェックボックスからリスナーを削除します。 RelativeLayoutのリスナーのロジックを、チェックボックスの状態に基づいて変更します。

+0

私は今日それを試みました。結果は面白かった。チェックボックスは、相対レイアウトをクリックすると正しく動作しましたが、チェックボックス自体をクリックすると、相対レイアウトリスナの基になるコードがトリガしていないように見えました。どのようにして今は全くトリガーしないのですか? –

+0

あなたのコードは間違っています。投稿してください –

関連する問題