0

我需要一些小代码的帮助。基本上我有一个按钮和一些生成的复选框(不知道有多少)。只要未选中复选框,该按钮就应该被隐藏和禁用。当检查一个或多个检查框时,应显示并启用按钮。我怎样才能做到这一点?

4

6 回答 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
    */
}

显然你不能复制/粘贴这段代码,但应该给你一个很好的主意。

OnCheckedChangedListener

设置可见性()

于 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 回答