Android:如何更改RadioButton的大小

时间:2010-06-10 13:08:59

标签: android size radio-button

我的应用中有很多RadioButton个。 RadioButtons对我来说太大了。有没有办法让它们变小?

9 个答案:

答案 0 :(得分:42)

一个快速的解决方案是缩小按钮:

<RadioButton
  android:scaleX="0.5"
  android:scaleY="0.5" />

这对于缩小规模非常有用。

为了更大,这往往会导致容器视图中的一些剪切,因此您可能必须硬编码RadioGroup的高度/宽度以适合缩放按钮。你绘制的按钮也可以显着地像素化,所以如果你想要大3倍的东西它就不是很好......

答案 1 :(得分:15)

可以完成但不像设置LayoutTWts和Layout_height那样简单,就像使用EditTexts,Buttons等一样简单。要修改视图的大小/外观,如复选框/单选按钮,请使用“背景“和”按钮“属性指定您自己的drawables。

这是一个较旧的页面,现在位置不同,但这会给你一个想法: http://www.anddev.org/tutorial_change_look_of_checkbox-t4553.html

答案 2 :(得分:13)

无法完成,单选按钮是一个内置的控件组件,因此它的大小是固定的。

答案 3 :(得分:2)

您可以使用scalex和scaley属性,然后使用translationX和translationY将其放在单选按钮窗口中。

<RadioButton
            android:id="@+id/rbtnfkilo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:scaleX="1.4"
            android:scaleY="1.4"
            android:text="Kilogram"
            android:textColor="#fff"
            android:textSize="18sp"
            android:translationX="24dp" />

答案 4 :(得分:1)

目前,Android Vector Asset Studio 具有用于未选中、选中的单选按钮的图标。 您可以导入此向量,然后通过更改向量 xml 中的 android:tint 来更改颜色

然后为 background 设置 RadioButton 就像

bg_radio_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="false" android:drawable="@drawable/ic_baseline_radio_button_unchecked_24" />
    <item android:state_checked="true" android:drawable="@drawable/ic_baseline_radio_button_checked_24" />
</selector>

..xml

<androidx.appcompat.widget.AppCompatRadioButton
        android:layout_width="@dimen/dp_24"
        android:layout_height="@dimen/dp_24"
        android:background="@drawable/bg_radio_selector"
        android:button="@null" />

现在您可以将 RadioButton 的大小更改为您想要的任何大小,但可能难以点击,因为点击区域非常小。
为了增加点击区域,我们可以使用这个函数(注意填充将不起作用,因为我们使用了 backgroundRadioButton 属性)(来自 How to increase hit area of Android button without scaling background? 的解决方案)

fun View.increaseTouchArea(pixel: Int) {
    val parent = parent as View
    parent.post {
        val rect = Rect()
        getHitRect(rect)
        rect.top -= pixel
        rect.left -= pixel
        rect.bottom += pixel
        rect.right += pixel
        parent.touchDelegate = TouchDelegate(rect, this)
    }
}

yourRadioButton.increaseTouchArea(context.resources.getDimensionPixelOffset(R.dimen.dp_12))

答案 5 :(得分:0)

我用RadioButton重拍了ToggleButton,并应用了相同的样式。我没有覆盖背景和按钮。

    <ToggleButton
        android:id="@+id/btnToggle1"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_weight="1"
        android:checked="true"
        style="@style/ToggleButtonStyle"
        android:button="@null"
        android:textOn="@string/btnTitle"
        android:textOff="@string/btnTitle"/>

和样式:

<style name="ToggleButtonStyle">
    <item name="android:background">@drawable/background_radiobutton</item>
    <item name="android:textColor">@color/selector_text_radiobutton</item>
    <item name="android:textAppearance">@null</item>
</style>

为我工作-外观相同,但高度自定义。

如果您的RadioButton在RadioGroup中,则需要自定义侦听器,请选中 Android: How to get a radiogroup with togglebuttons?

答案 6 :(得分:0)

有另一种方法可以更改大小。 从矢量资产中选中和取消选中导入单选按钮。

创建三个drawable

radio_button_check

  • 指定任意宽度和高度

radio_button_uncheck

 fetchUserImage(int currentIndex) async {
            setState(() {
              isLoading = true;
            }); 
    
    await FirebaseFirestore.instance
            .collection("users")
            .where("username", isEqualTo: username)
            .get()
            .then((val) {
          userId = val.docs[0]['uid'];
          print("This is userId");
          print(userId);
        });
    
        await FirebaseFirestore.instance
            .collection("imageCount")
            .doc(userId)
            .get()
            .then((val) {
          imgCnt = val['cnt'];
          print('This is image count');
          print(imgCnt);
        });
    
        await FirebaseFirestore.instance
            .collection("imageURLs")
            .doc(userId)
            .get()
            .then((val) {
          for (int i = 0; i < imgCnt; i++) {
            print('This is ' + i.toString() + " url");
            imgUrls![i] = val[i.toString()];
            print(imgUrls![i]);
          }
        });
 setState(() {
      isLoading = false;
    });
  }

custom_radio_button

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:width="60dp"
            android:height="60dp"
            android:drawable="@drawable/ic_radio_button_unchecked" />
    </layer-list>

单选按钮

在单选按钮中

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/radio_button_check" android:state_checked="true"></item>
    <item android:drawable="@drawable/radio_button_uncheck"></item>
</selector>

如果要更改文本大小,请使用“android:textSize”属性

图中第一个是自定义单选按钮,第二个是默认单选按钮

enter image description here

答案 7 :(得分:-1)

<RadioGroup android:layout_width="fill_parent"               
            android:layout_height="50dp"           
            android:orientation="horizontal"         
            android:checkedButton="@+id/first">  

 <RadioButton android:id="@+id/first"        
      android:width="50dp"        
      android:height="50dp"        
      android:button="@drawable/button_radio"/> 

   <RadioButton android:id="@+id/second"        
      android:width="50dp"     
      android:height="50dp"     
      android:button="@drawable/button_radio"/>

   <RadioButton android:id="@+id/third"
      android:width="50dp"
      android:height="50dp"
      android:button="@drawable/button_radio"/>

   <RadioButton android:id="@+id/fourth"                                          
      android:width="50dp"              
      android:height="50dp"           
      android:button="@drawable/button_radio"/>           
</RadioGroup>

答案 8 :(得分:-2)

我通过调整RadioButton本身的TextSize

完成了这项工作

喜欢这样

android:textSize="20sp"

然后申请我的代码;

<RadioGroup
    android:id="@+id/checkboxRadioButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/rb1"
        style="@android:style/Widget.CompoundButton.CheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/checkBoxMargin"
        android:text="YES"
        android:textSize="20sp" />
    ...

希望对某人有所帮助