标签: android-radiobutton

Android 动态生成的单选按钮一旦以编程方式 setChecked 就不会取消选中

当我单击同一 RadioGroup 中的其他 RadioButton 时,我无法取消选中以下动态生成的 RadioButton。

我什至诉诸于编写自己的处理程序来清除RadioGroup(如下),并尝试了另一个使所有RadioButtons .setChecked(false)的处理程序,但这仍然没有清除我在PopulateAccessPoints中设置检查的RadioButton。

有任何想法吗?

RelativeLayout rlaAccessPoints;
RadioGroup rg;

public void onRadioButtonClicked(View view) {
// Is the button now checked?
RadioButton rd = (RadioButton)view;
rg.clearCheck();
rd.setChecked(true);
}


private void PopulateAccessPoints(List<clsAccessPoint> accessPoints){
rg = new RadioGroup(this);

for (clsAccessPoint acp :  accessPoints) {
    RadioButton rd = new RadioButton(this);
    rd.setText(acp.ID + ": " + acp.Name);

    rd.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            onRadioButtonClicked(v);
        }
    });

    rg.addView(rd);
}

rlaAccessPoints.addView(rg);

for (int i = 0; i <= rg.getChildCount() - 1; …
Run Code Online (Sandbox Code Playgroud)

android android-radiogroup android-radiobutton

5
推荐指数
1
解决办法
2494
查看次数

android 在文本右侧设置单选按钮

早上好 !

我想在他的文本中设置一个单选按钮。我在这里看到了这样的解决方案:

 <RadioButton
            android:drawablePadding="30dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New RadioButton"
            android:id="@+id/radioButton"
            android:drawableRight="@android:drawable/btn_radio"
            android:button="@null"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:paddingStart="18dp"
            android:paddingEnd="12dp"
            android:textColor="@color/DefaultGrey"
            android:textSize="14sp"
            android:checked="false" />
Run Code Online (Sandbox Code Playgroud)

这直接从他的文本中设置了单选按钮,但我不喜欢通过此代码获得的替代单选按钮的样式。

有没有办法使用默认的单选按钮样式?

android android-layout android-radiobutton

5
推荐指数
1
解决办法
8205
查看次数

片段中的 Android 单选按钮

我下面单选按钮的教程,并希望创造一些RadioGroupsRadioButtons在片段。我定义了 onClick 方法,但是如果我单击 RadioButton 会出现错误:

java.lang.IllegalStateException: Could not find method FirstQuestion(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatRadioButton with id 'test1from10question1answerA'
                                                                               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:325)
                                                                               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
                                                                               at android.view.View.performClick(View.java:4438)
                                                                               at android.widget.CompoundButton.performClick(CompoundButton.java:100)
                                                                               at android.view.View$PerformClick.run(View.java:18422)
                                                                               at android.os.Handler.handleCallback(Handler.java:733)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:136)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5045)
                                                                               at java.lang.reflect.Method.invokeNative(Native Method)
                                                                               at java.lang.reflect.Method.invoke(Method.java:515)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                               at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我的 xml 文件是:

<LinearLayout 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"
   tools:context="com.plan.aplikacjamobilna.registerTestFragments.question1from10"
   android:layout_marginLeft="20dp"
   android:layout_marginRight="20dp"
   android:orientation="vertical">

   <!-- TODO: Update blank fragment layout …
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-fragments android-radiobutton

5
推荐指数
1
解决办法
2756
查看次数

如何在 Android 上加速或关闭 RadioButton 的动画?

我有一个带有动态添加的 RadioButtons 的 RadioGroup。在我的活动中,我在选择 RadioButton 后立即关闭活动。然而,这会导致一个工件,其中两个 RadioButton 看起来像是在 Activity 完成之前被选中。当 Activity 完成时,上一个选择和当前选择仍然是动画。

有没有办法加速动画或完全禁用它,这样我就看不到这个视觉工件?

radioButton.setChecked(true);   // previous selected button is still deselecting and current button is now selecting. both are in the middle of animating but activity closes before they can finish animating  
finishWithResult(selected == null ? Activity.RESULT_CANCELED : Activity.RESULT_OK, selectedItem);
Run Code Online (Sandbox Code Playgroud)

android android-radiogroup android-radiobutton

5
推荐指数
1
解决办法
561
查看次数

如何在选择/取消选择时更改单选按钮的背景颜色/形状

我正在 for 循环中以编程方式将单选按钮添加到 RadioGroup 中。我希望我的按钮在未选中时具有某种背景颜色,在选中时具有另一种背景颜色(一次只能选择一个)。我的问题是我也希望这个背景是一个圆角矩形。我让它部分工作,但每当我选择一个答案时,它都会将该按钮的背景设置为白色,但不会重置任何其他按钮。

我知道我需要某种类型的选择器对象,以添加单选组所需的切换行为。我找到了一些例子,但它们只展示了如何将纯色设置为背景。我需要使用这个圆角形状。所以,我的麻烦是弄清楚如何将两者结合起来。我的做法可能完全错误。如果有更好的方法来实现我想要的,我宁愿使用它,而不是挽救我已经尝试过的方法。

我通过创建两个 XML 文件来接近这个目标,每个文件都有一个形状对象和它自己的背景颜色。如果选择了单选按钮,其样式将设置为 radio_button_checked" 样式。但是,我知道我正在接近这个错误,因为另一个选中的按钮不会关闭。我基本上可以单击所有按钮并使它们全部具有白色背景。我知道有更好的方法可以做到这一点,我只是不知道它是什么

这是我添加按钮的循环,以及 radiogroup rg 的更改侦听器(rg 是我的 RadioGroup,答案只是字符串的 HashMap。它们不会影响与此问题相关的任何内容。buttonTintList 行只是为了改变圆圈颜色)

for(int i = 0; i < answers.size(); i++)
    {
        RadioButton rb = new RadioButton(context);
        rb.setTextColor(ContextCompat.getColor(context, R.color.colorPrimaryDark));


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            rb.setButtonTintList(ColorStateList.valueOf(ContextCompat.getColor( context, R.color.colorAccent)));
        }
        rb.setBackground(context.getResources().getDrawable(R.drawable.radiobutton_style_unchecked));
        rb.setText(answers.get(i));
        rb.setWidth(800);
        rb.setHeight(150);
        rb.setTextSize(18);
        rb.setLayoutParams(params);
        rg.addView(rb);
    }
    /*  Store the answer */
    rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            RadioButton rb= (RadioButton)group.findViewById(checkedId);
            answer = rb.getText().toString();

            rb.setBackground(context.getResources().getDrawable(R.drawable.radiobutton_style_checked));

        }
    });
Run Code Online (Sandbox Code Playgroud)

以下是未选中按钮的 XML (radiobutton_style_unchecked.xml) …

java android android-layout android-radiobutton

5
推荐指数
1
解决办法
2886
查看次数

如何在垂直方向的Android单选按钮之间提供间距

我遇到一种情况,我需要在垂直排列的单选按钮之间提供间距。
以下是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:paddingLeft="20dp"
    android:paddingStart="20dp"
    android:paddingRight="20dp"
    android:paddingEnd="20dp"
   >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="My text view"
        android:textSize="20dp"
        android:textColor="#000000"
        android:gravity="center_vertical"
        android:background="@drawable/roundedlabel"
       />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="152dp"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="text view1"
             android:textSize="20dp"
             android:paddingTop="10dp" 
              />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:text="text view2"
          
/>
        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:text="text view3" 
            
            />
   
     <RadioButton
            android:id="@+id/radio3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             android:textSize="20dp"
             android:text="text v4iew" 
            />
    </RadioGroup>
    

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)


我尝试将android:paddingTop="10dp"每个单选按钮置于文本底部,但是单选按钮保持在同一位置。
谁能帮助我如何在垂直排列的单选按钮之间提供间距?

android android-layout android-radiobutton

4
推荐指数
1
解决办法
9020
查看次数

Radio Button风格以编程方式

我想在一个片段中创建一些dinamically的单选按钮,我只有样式问题.如果我将radiobutton代码放在​​xml文件中,则会正确应用默认样式,但是当我通过函数创建radiobutton时,我会看到不同的样式!

XML

<RadioGroup
            android:id="@+id/radiogroup"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical"
            android:animationCache="false">

            <RadioButton
                android:text="RadioButton 1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/radioButton3" />

            <RadioButton
                android:text="RadioButton 2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/radioButton4" />


</RadioGroup>
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

JAVA CODE

此代码放在片段中的onCreateView中

public void addRadioButton(Context ctx,int num){

    RadioGroup radioGroup= (RadioGroup) alertInflatedView.findViewById(R.id.radiogroup);

    for (int i = 1; i <= num; i++) {
        RadioButton radioButton  = new RadioButton(ctx);
        radioButton.setId(1+i);
        radioButton.setText("Radio " + radioButton.getId());
        radioButton.setTextColor(getResources().getColor(R.color.black));

        radioGroup.addView(radioButton);

    }

}
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

正如你所看到的单选按钮有不同的风格,有人可以帮助我,如果可能的话,以编程方式应用默认样式?

android android-radiobutton

4
推荐指数
3
解决办法
7181
查看次数

以编程方式单击android中的单选按钮?

单击带有代码的单选按钮有什么技巧吗?我已经尝试过radioButton.setChecked(true).setSelected(true)。但这不是我想要的。那两种方法都不能触发按钮的事件。我为每个单选按钮编写了一个 onclick 侦听器,使 EditText 出现在单击的按钮下方。所以,如果可能的话,我需要一个像 radioButton.click() 这样的方法。谢谢..

android android-radiobutton

3
推荐指数
1
解决办法
4323
查看次数

Android-将填充设置为RadioButton引脚

我已经尝试了很多与xml和以编程方式结合的方法,但是目前还没有任何事情。这是场景(注意红色的小箭头):

在此处输入图片说明

我在单选组中有一些RadioButtons,在xml中,这种情况可以表示为:

<RadioGroup
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   android:id="@+id/radiobuttons"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:dividerPadding="30dp">
   <RadioButton android:id="@+id/radio_blue"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="How to set the padding on the left of radio pin"
      android:background="@drawable/container_dropshadow"/>
  <!-- other radio buttons... -->
</RadioGroup>
Run Code Online (Sandbox Code Playgroud)

我的问题是我既没有找到一种方法也无法在xml中或以编程方式来设置圆形图钉的左填充(我对两者都感兴趣)。实际上,我在RadioButton对象中尝试修改的每个填充似乎仅引用其中的文本(即Java函数setPadding和setCompoundDrawablePadding或xml android:paddingLeft和android:drawablePadding不起作用)。

我的container_dropshadow.xml是:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <!-- Drop Shadow Stack -->
   <item>
      <shape>
         <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
         <solid android:color="#00CCCCCC" />
  </shape>
   </item>
   <item>
      <shape>
         <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
         <solid android:color="#10CCCCCC" />
      </shape>
   </item>
   <item>
      <shape>
         <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
         <solid android:color="#20CCCCCC" …
Run Code Online (Sandbox Code Playgroud)

xml android padding styling android-radiobutton

3
推荐指数
2
解决办法
1278
查看次数

在自定义警报对话框中获取单选按钮的值

我创建了一个带有单选组、单选按钮和编辑文本的自定义警报对话框。

目标是尝试从选定的单选按钮和编辑文本中获取文本值。此时,我只能获取edittext中输入的值。

我已经看到了下面的链接,并尝试调整代码以适应,但似乎代码仍然不起作用。

Android 从选定的单选按钮中获取价值

http://www.mkyong.com/android/android-radio-buttons-example/

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<RadioGroup
    android:id="@+id/radioPersonGroup"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RadioButton
        android:id="@+id/gButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:text="G" />
    <RadioButton
        android:id="@+id/kButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:text="K" />

</RadioGroup>

<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:layout_marginLeft="16dp"
    android:layout_weight="1"
    android:ems="10"
    android:hint="$10.00"
    android:inputType="numberDecimal" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

java文件

private RadioButton radioSelectedButton;
...

FloatingActionButton fab = findViewById(R.id.fab);
final RadioGroup group = findViewById(R.id.radioPersonGroup);
fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        final …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog android-radiogroup android-radiobutton

3
推荐指数
1
解决办法
2357
查看次数