我有一个相对布局。在那个相对布局中,我在左端有一个textview,在右端有一个复选框。现在 我想要的是,当我点击整个布局(上面的相对布局)时,复选框需要检查。任何请 帮助我。
<RelativeLayout
android:id="@+id/layoutavailable"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/layouttaxexempt"
android:layout_marginTop="25dp"
>
<TextView
android:id="@+id/txt_avl"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:hint="IsAlwaysAvailable"
android:textSize="20sp"
android:textColorHint="@color/white"
android:layout_marginTop="5dp"
android:layout_marginLeft="13dp"
/>
<CheckBox
android:id="@+id/c_avl"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_marginTop="5dp"/>
</RelativeLayout>
答案 0 :(得分:2)
将侦听器设置为布局
CheckBox cBox = (CheckBox) findViewById(R.id.c_avl);
findViewById(R.id.layoutavailable).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
cBox.setChecked(!cBox.isChecked());
}
});
答案 1 :(得分:2)
代码:
public void onClick(View v) {
if (checkbox.isChecked()){
checkbox.setChecked(false);
}
else {
checkbox.setChecked(true);
}
}
答案 2 :(得分:0)
使用CheckedTextView而不是普通的TextView。
并将CheckedTextView的宽度和高度设为match_parent“
答案 3 :(得分:0)
试试这个:
public class MainActivity extends Activity {
RelativeLayout layout;
CheckBox cb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb=(CheckBox)findViewById(R.id.checkBox1);
layout = (RelativeLayout) findViewById(R.id.layoutavailable);
layout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
cb.setChecked(true);
return false;
}
});
}
答案 4 :(得分:0)
你可以通过以下方式做到
yourRelativeLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
youCheckbox.setChecked(!(test.isChecked()));
}
});
答案 5 :(得分:0)
首先通过在相对布局标记正文中编写给定代码来使您的相对布局可点击,并将ID分配给您的布局。: -
android:clickable="true"
android:id="@+id/rl"
然后在您的Activity Java文件中,在您的on create instance中编写代码: -
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test2);
Relative Layout rl = (LinearLayout)findViewById(R.id.rl);
final CheckBox c_avl = (CheckBox)findViewById(R.id.checkBox1);
rl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
c_avl.setChecked(true);
}
});
}
这确实会解决你的问题。
答案 6 :(得分:0)
您还可以通过使用CheckBox类的toggle()方法来实现此目的。请注意,使用切换方法时,不会有任何动画。我解决该问题的方法是通过覆盖toggle方法,并定义自己的切换。
private RelativeLayout layoutAvailable = findViewById(R.id.layoutavailable);
private CheckBox cAvl = findViewById(R.id.c_avl);
layoutavailable.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
cAvl.toggle();
}
})
答案 7 :(得分:-1)
将父RelativeLayout
的状态传递给它的孩子CheckBox
设置RelativeLayout
可点击,并将属性android:duplicateParentState
添加到CheckBox
<RelativeLayout
android:id="@+id/layoutavailable"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/layouttaxexempt"
android:layout_marginTop="25dp"
android:clickable="true"
>
<TextView
android:id="@+id/txt_avl"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:hint="IsAlwaysAvailable"
android:textSize="20sp"
android:textColorHint="@color/white"
android:layout_marginTop="5dp"
android:layout_marginLeft="13dp"
/>
<CheckBox
android:id="@+id/c_avl"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:duplicateParentState='true'
android:layout_marginTop="5dp"/>
</RelativeLayout>