代码之家  ›  专栏  ›  技术社区  ›  Maxouille

TableLayout可见性仅在第二次单击按钮时有效

  •  0
  • Maxouille  · 技术社区  · 7 年前

    我对表格布局有问题。当我点击“清除”按钮时,我试图隐藏它的所有内容。然而,它只有在我点击两次按钮时才起作用。我还有两个单选按钮来隐藏或显示这个表格布局。奇怪的是,当点击一个带有完全相同代码的单选按钮时,它会工作: 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>
    

    谢谢

    2 回复  |  直到 7 年前
        1
  •  2
  •   Pier Giorgio Misley    7 年前

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

    移除 clearCheck 请进 button click listener (或在更改可见性之前移动) 因为它触发了 onCheckedChange 你的听众 radioGroupTask ,这将改变您的 layout 再一次

        2
  •  1
  •   Vrushali Raut    7 年前

    clearCheck()-清除选择。因此,首先需要清除选择。首先,然后需要隐藏TableLayout。