TableLayout Visibility GONE 仅在第二次单击按钮时起作用

TableLayout Visibility GONE working only on second click on button

我的 TableLayout 有问题。我试图在单击 "Clear" 按钮时隐藏其所有内容。但是,只有当我在按钮上单击两次时它才有效。我还有两个单选按钮可以隐藏或显示此 table 布局。奇怪的是,当单击具有完全相同代码的单选按钮时它会起作用: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>

谢谢!

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

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

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