我对这个错误的临时解决方案是用包含和的(s)替换父RadioGroup
布局。尽管还有其他解决方案。TableLayout
TableRow
RadioButton
TextView
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TableRow android:onClick="onDropboxClick" >
<RadioButton
android:id="@+id/radio_cloud_dropbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:onClick="onDropboxClick" />
<TextView
android:drawableLeft="@drawable/cloud_logo_dropbox"
android:gravity="center_vertical"
android:text="Dropbox" />
</TableRow>
<TableRow android:onClick="onGoogleDriveClick" >
<RadioButton
android:id="@+id/radio_cloud_google_drive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:onClick="onGoogleDriveClick" />
<TextView
android:drawableLeft="@drawable/cloud_logo_google_drive"
android:gravity="center_vertical"
android:text="Google Drive" />
</TableRow>
</TableLayout>
然而,由于RadioGroup
不能与嵌套布局一起使用,选择/取消选中状态必须在事件处理方法的关联活动中手动完成:
public void onDropboxClick(View view) {
checkRadio(R.id.radio_cloud_dropbox);
}
public void onGoogleDriveClick(View view) {
checkRadio(R.id.radio_cloud_google_drive);
}
private void checkRadio(int radioId) {
if (radioId == R.id.radio_cloud_dropbox) {
dropboxRadio.setChecked(true);
googleDriveRadio.setChecked(false);
} else if (radioId == R.id.radio_cloud_google_drive) {
dropboxRadio.setChecked(false);
googleDriveRadio.setChecked(true);
}
}