Android:如何更改 RadioButton 的大小

Posted

技术标签:

【中文标题】Android:如何更改 RadioButton 的大小【英文标题】:Android: How to change the Size of the RadioButton 【发布时间】:2011-03-02 04:07:33 【问题描述】:

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

【问题讨论】:

我想您可以编写自己的控件,但请记住,控件太小可能会使某些用户在触摸模式下更难准确地点击控件。这会降低您应用的可用性。 我找到了这个解决方案,在这里查看我的答案https://***.com/a/44310577/6112256 【参考方案1】:

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

创建三个可绘制对象

radio_button_check

指定任意宽度和高度

radio_button_uncheck

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

custom_radio_button

<?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>

单选按钮

在单选按钮中

<RadioButton                                       
    android:layout_
    android:layout_                                       
    android:button="@drawable/custom_radio_button"
    android:paddingLeft="10dp"
    android:textSize="39dp"
    android:text="1" />

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

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

【讨论】:

【参考方案2】:

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

然后设置backgroundRadioButtonlike

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_
        android:layout_
        android:background="@drawable/bg_radio_selector"
        android:button="@null" />

现在您可以将RadioButton 的大小更改为您想要的任何大小,但可能很难点击,因为点击区域非常小。 为了增加点击区域,我们可以使用这个函数(注意,填充不起作用,因为我们使用RadioButtonbackground属性)(来自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))

【讨论】:

【参考方案3】:

我将RadioButton 替换为ToggleButton 并应用了相同的样式。我确实覆盖了背景和按钮。

    <ToggleButton
        android:id="@+id/btnToggle1"
        android:layout_
        android:layout_
        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?

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

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

这非常适合变小。

为了变得更大,这往往会导致容器视图出现一些剪裁,因此您可能必须对 RadioGroup 的高度/宽度进行硬编码以适应缩放按钮。可绘制的按钮也可能会随着您的移动而显着像素化,因此如果您想要 3 倍大的东西,这并不是很好......

【讨论】:

并添加 android:textSize="[size]sp" 也会缩放单选按钮标签,但匹配按钮和标签大小需要更多硬代码... 缩小按钮大小,但在它们之间留出更大的空间【参考方案6】:

不能,单选按钮是一个内置的控件组件,因此它的大小是固定的。

【讨论】:

做起来可能不容易,但有可能;见***.com/a/4787260/3063884 请不要回复esp。带有“做不到”之类的负面评论,但不确定!看,Michael 有一个简单可行的解决方案! 有另一种方法。通过创建自定义单选按钮。见***.com/a/68220214/5039264【参考方案7】:
<RadioGroup android:layout_               
            android:layout_           
            android:orientation="horizontal"         
            android:checkedButton="@+id/first">  

 <RadioButton android:id="@+id/first"        
      android:        
      android:        
      android:button="@drawable/button_radio"/> 

   <RadioButton android:id="@+id/second"        
      android:     
      android:     
      android:button="@drawable/button_radio"/>

   <RadioButton android:id="@+id/third"
      android:
      android:
      android:button="@drawable/button_radio"/>

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

【讨论】:

ths 不能缩放内部单选按钮样式【参考方案8】:

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

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

【讨论】:

这是一个损坏的链接。

以上是关于Android:如何更改 RadioButton 的大小的主要内容,如果未能解决你的问题,请参考以下文章

Android RadioButton选中时颜色更改

android:radiobutton的大小可以更改,你是怎么实现的

添加值,更改单击单选按钮android

需要更改单选按钮的布局

如何取消 RadioButton 或 CheckBox 选中的更改

radioButton drawable selector