我需要一些小代码的帮助。基本上我有一个按钮和一些生成的复选框(不知道有多少)。只要未选中复选框,该按钮就应该被隐藏和禁用。当检查一个或多个检查框时,应显示并启用按钮。我怎样才能做到这一点?
user2976492
问问题
1435 次
6 回答
1
只需创建一个计数器变量
public class MyActivity extends Activity
{
int counter = 0;
//onCreate() and other code
然后根据是否选中该框来设置onCheckedChangedListener()
您的值并增加/减少值CheckBoxes
onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
counter++;
}
else
{
counter--;
}
/* if (counter > 0)
change visibility
*/
}
显然你不能复制/粘贴这段代码,但应该给你一个很好的主意。
于 2013-11-11T18:45:28.383 回答
1
举个例子……
XML 文件:
<CheckBox android:id="@+idMain/check1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<CheckBox android:id="@+idMain/check2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<CheckBox android:id="@+idMain/check3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+idMain/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"/>
活动:
公共类 MainActivity 扩展 Activity {
LinearLayout idLayoutThisXml;
Button btn;
public boolean verifyChecked(){
idLayoutThisXml = (LinearLayout) findViewById(idMain.layout);
for (int i = 0; i < idLayoutThisXml.getChildCount(); i++) {
View v = idLayoutThisXml.getChildAt(i);
if(v instanceof CheckBox){
if(((CheckBox)v).isChecked()){
return true;
}
}
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(idMain.button);
if(verifyChecked()){
btn.setVisibility(View.VISIBLE);
}
else{
btn.setVisibility(View.INVISIBLE);
}
}
}
所以我有一个具有 CheckBox 类型子项的布局,并且测试将所有 CheckBox llinearLayout,满足至少一个标记。按钮变为可见。
于 2013-11-11T19:15:34.963 回答
1
会是这样的吗?
公共类 MainActivity 扩展 Activity {
LinearLayout idLayoutThisXml;
Button btn;
public boolean verifyChecked(){
idLayoutThisXml = (LinearLayout) findViewById(idCadastro.linearLayout);
for (int i = 0; i < idLayoutThisXml.getChildCount(); i++) {
View v = idLayoutThisXml.getChildAt(i);
if(v instanceof CheckBox){
if(((CheckBox)v).isChecked()){
return true;
}
}
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(idMain.button);
if(verifyChecked()){
btn.setVisibility(View.VISIBLE);
}
else{
btn.setVisibility(View.INVISIBLE);
}
}
}
于 2013-11-11T19:09:13.740 回答
0
将按钮可见性设置为不可见
<Button android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
android:visibility="invisible"/>
然后打电话
Button btn = (Button)findViewById(R.id.thebuttonid);
btn.setVisibility(View.VISIBLE); //View.GONE, View.INVISIBLE are available too.
当条件满足时。 http://developer.android.com/reference/android/view/View.html
于 2013-11-11T18:44:37.780 回答
0
你在 XML 中有一个复选框好吗?处理活动中的复选框
CheckBox c = (CheckBox) findViewById (idThisCheckBoxInXml)
和
if (c.isActivated ()) {
botao.setVisibility (View.INVISIBLE) or botao.setVisibility (View.VISIBLE)
}
会是这样的吗?原谅我的英语不好...
于 2013-11-11T18:46:48.230 回答
0
myButton.setVisibility(View.INVISIBLE);
然后,在CheckBox
'sOnClickListener
中,做myButton.setVisibility(View.VISIBLE);
于 2013-11-11T18:36:59.463 回答