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
。
我的 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
。