【问题标题】:TableLayout Visibility GONE working only on second click on buttonTableLayout Visibility GONE 仅在第二次单击按钮时起作用
【发布时间】:2018-05-05 01:02:27
【问题描述】:

我的 TableLayout 有问题。当我点击“清除”按钮时,我试图隐藏它的所有内容。但是,它仅在我单击按钮两次时才有效。我还有两个单选按钮可以隐藏或显示此表格布局。奇怪的是,当单击具有完全相同代码的单选按钮时它正在工作:setVisibility(View.GONE)setVisibility(View.VISIBLE)

如果你能帮助我,那就太棒了。

代码如下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.dialog_task_validation);

        setTitle("Task Validation");

        // set the custom dialog components - text, image and button
        final RadioGroup radioGroupTask = (RadioGroup) findViewById(R.id.radioGroup);
        radioGroupTask.clearCheck();

        noteLayout = (TableLayout) findViewById(R.id.noteLayout);


        radioGroupTask.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
                RadioButton rb = (RadioButton) group.findViewById(checkedId);
                if (rb != null && checkedId > -1) {
                    switch (checkedId) {
                        // If task Failed
                        case R.id.taskFailedRadioButton:
                            taskCompeleted = 0;
                            noteLayout.setVisibility(View.GONE);
                            note = 0;
                            break;
                        case R.id.taskCompletedRadioButton:
                            taskCompeleted = 1;
                            noteLayout.setVisibility(View.VISIBLE);
                            break;
                    }
                }

            }
        });
        Button clear = (Button) findViewById(R.id.clearDialogButton);


        clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                noteLayout.setVisibility(View.GONE);
                resetButtonBackground();
                note = -1;
                taskCompeleted = -1;
                radioGroupTask.clearCheck();
            }
        });
    }

还有 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp">

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/recordNameTV"
        android:id="@+id/radioGroup">

        <RadioButton
            android:id="@+id/taskFailedRadioButton"
            style="?android:attr/radioButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/task_failed" />
        <RadioButton
            android:id="@+id/taskCompletedRadioButton"
            style="?android:attr/radioButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/task_completed" />
    </RadioGroup>


    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/noteLayout"
        android:layout_below="@+id/radioGroup"
        android:layout_above="@+id/linearLayout"
        android:visibility="gone">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <Button
                android:id="@+id/note1"
                android:text="1"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note2"
                android:text="2"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note3"
                android:text="3"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/note4"
                android:text="4"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note5"
                android:text="5"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note6"
                android:text="6"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/note7"
                android:text="7"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note8"
                android:text="8"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note9"
                android:text="9"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/note10"
                android:text="10"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>
    </TableLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:id="@+id/linearLayout">

            <Button
                android:id="@+id/clearDialogButton"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/clearText" />

        </LinearLayout>
</RelativeLayout>

谢谢!

【问题讨论】:

  • 你试过从按钮点击监听器中移除 clearChecks() 吗?
  • radioGroupTask.clearCheck(); 将触发onCheckedChange 回调,并且您的布局再次更改。
  • 哦,就是这样!我之前添加了 clearCheck() ,它工作正常!谢谢!
  • 先清除检查然后设置可见性

标签: android button visibility tablelayout


【解决方案1】:

clearCheck() - 清除选择。所以首先你需要清除选择。首先然后需要隐藏TableLayout。

【讨论】:

    【解决方案2】:

    为了帮助其他人,我将在这里报告我的评论:

    删除button click listener 中的clearCheck 调用(或在更改可见性之前移动它) 因为它会触发您的radioGroupTaskonCheckedChange 侦听器,这将更改您的@ 987654325@再次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2012-07-09
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多