- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 RadioGroups clearCheck 方法和旋转我的应用程序时遇到问题。我认为这可能是 Google 的问题?
我有一个三按钮单选组,启动时默认选中 xml 中的第一个项目。
我的问题是,我有一个调用 radio 组 clearCheck() 的按钮。如果您旋转应用程序,然后尝试按下第一个单选组项目,它不会被选中。它会尝试显示动画,但仍未选中。
我以为我快疯了,我的代码出了点问题,但我已经通过制作一个新应用程序将其分解为最简单的应用程序。
如果我不预选按钮 A(通过 XML 或代码),那么它可以正常工作,但我需要预选此按钮。
知道如何解决这个问题并默认选择 A 吗?
repo 步骤
结果: radio A 不会选择。如果您随后按 B 或 C,您可以再次按 A,但在此之前不能。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
Button clearButton = (Button) findViewById(R.id.clearButton);
clearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
radioGroup.clearCheck();
}
});
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:gravity="center"
android:checkedButton="@+id/radioButtonA"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioButtonA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="A" />
<RadioButton
android:id="@+id/radioButtonB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="B" />
<RadioButton
android:id="@+id/radioButtonC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="C" />
</RadioGroup>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clear"
android:id="@+id/clearButton"
android:layout_below="@+id/searchRadioGroup"
android:layout_centerHorizontal="true"
android:layout_marginTop="114dp" />
</RelativeLayout>
最佳答案
轮换时,由于 android:checkedButton="@+id/radioButtonA"
,检查的 id 被重置。
如果选中了一个按钮,CompoundButton
的 onRestoreInstanceState
会再次将选中的按钮重置为正确的选中按钮。
相反,如果没有选中按钮,buttonA 的 onRestoreInstanceState
会将其重置为未选中状态。 RadioGroup
不处理这种情况,因为它不是为处理取消检查而设计的。
因此,我们最终以 RadioGroup
跟踪 buttonA 为选中状态,而 buttonA 跟踪自身为未选中状态。当您单击 buttonA 时,会处理检查,但是由于 check()
方法中的短路逻辑,UI 不会更新,因为它假定由于 id 已经与手头的 mCheckedId 匹配,该按钮应该已经被选中:
// don't even bother
if (id != -1 && (id == mCheckedId)) {
return;
}
我想这可能被认为是一个错误,但它最终归结为您的一些奇怪的设计选择。您将其设置为默认为 buttonA,这意味着用户在正常情况下无法取消选中任何按钮,然后您提供一个清除按钮以使它们进入正常情况下无法达到的非默认状态。因此,有两种可能的解决方案可以让您关注 UI 设计选择:
1) 如果您希望始终有一个选中的按钮,请将重置按钮重置为默认状态。
clearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mRadioGroup.check(R.id.radioButtonA);
}
});
2) 如果您希望那里可能没有选中的按钮,请不要默认任何内容。
关于Android - RadioGroup 的第一个按钮在 clearCheck() 和旋转后变得不可选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31752800/
Android 上的动态表单可能非常困惑,我遇到过这种特殊情况,我通过 RadioGroup 和 AppCompatRadioButton 创建了一个选项列表,其中checkedId 与动态 Radi
我想实现如下图所示的Single RadioGroup 以进行血型选择。如何做到这一点? 最佳答案 我创建了自己的 RadioGridLayout,其中包含 RadioGroup 代码并扩展了 Gri
我有一个带有单选按钮的 RadioGroup。要清除选中的项目,我正在调用 radiogroup.clearCheck()。但是,RadioGroup.setOnCheckedChangeListen
我不知道为什么我的 RadioGroup 分隔线没有显示。有人请说明一下。我已经看过 Android radiogroup, divider between radiobuttons .
有没有办法将 radioGroup 设置为只读。我试过disabled: true,但这会在radioGroup上创建一个掩码,这使得它几乎不可读。关于如何将 extjs radioGroup 设置为
我有以下 HTML,我需要一个单选按钮。不确定如何在 AngularJS 中执行此操作。 Type of M (check one):
我在 RadioGroup Listener 上遇到问题,我对 Android 有点菜鸟,非常感谢您的帮助。 我有 5 个单选按钮,每个按钮都有不同的值。 下面是java代码 package com.
我上周刚刚开始学习,我对我书上的RadioGroup有一些疑问。 radioGroup.clearCheck(); radioGroup.setOnCheckedChangeListener(
我正在尝试为单选按钮(或可切换按钮)制作自定义样式,但我不知道它是否可以实现。 我的按钮的当前样式: 我想实现这样的目标 理想的风格: 一个加号是有一个动画,其中选定的颜色在按钮之间“滑动”。在 xm
我创建了一个 RadioGroup 并以编程方式向其添加 RadioButtons。问题是,运行时我可以选中所有选项,但无法取消选中它们。这是我的代码: optionsContaine
我的想法是让 ImageView - RadioButton 成对,每对包含在 LinearLayout(水平方向)和 ImageButtons 中,当选择并确认一个选项时,它们的背景颜色会改变。所以
我正在做一个应用程序,我必须在其中为初始选择的项目生成具有特定基值的复选框,然后更改它的值。那里没有什么很复杂的。 我的问题是当我重置布局时,我创建了一个新的 RadioGroup,其中包含新的 Ra
我正在尝试从单选组获取单选按钮文本,但问题是:它没有获得值。我搜索了其他链接,但对我没有帮助。 private EditText FirstName; private EditText
这是我在这个网站上的第一篇文章,我希望它做得很好。我试图在我的 radio 组中进行单一选择,但所有这些都被选中并且无法取消选中。我希望如果一个单选按钮被选中,其他的则保持未选中状态。到目前为止,这是
我正在尝试创建 2 行单选按钮,如下图所示。但是直接放在上面我的radio group就不行了线性布局。 我是安卓开发的新手。所以如果有更好的选择。欢迎他们 我的代码
我正在尝试创建一个 RadioGroup,如图所示。我希望一次只检查一个 RadioButton。 这就是我为实现这一目标所做的。
我想创建一个包含 RadioGroup 的自定义 View。在 RadioGroup 内部,我想设置 RadioButtons,以便第一个 RadioButton 位于左上角,第二个是在那之下,第一个
是否可以在自己的布局中拥有一个带有单选按钮的单选组?每个单选按钮都必须位于包含文本和图像的行中。我不会使用 ListView ,因为我只有 2 行。 最佳答案 方法如下: 在 XML 布局文件中的每个
我在我的应用程序上安装了一个带有三个单选按钮的单选按钮组,但我希望文本显示在它上面,就像复选框等一样。我可以像这样引用 strings.xml 文件吗?
我想给用户四个选择,第一个和第二个选择在一行,第三个和第四个选择在另一行。我的问题是当应用程序启动时我可以选择多个选项,但我不希望这样。这是我的 xml 布局:
我是一名优秀的程序员,十分优秀!