Android:如何更改单选按钮的大小

Android:如何更改单选按钮的大小,android,size,radio-button,Android,Size,Radio Button,我的应用程序中有许多单选按钮。单选按钮对我来说太大了。有没有办法使它们变小?无法做到,单选按钮是一个内置的控制组件,因此它的大小是固定的。可以做到,但不像编辑文本、按钮等那样设置布局宽度和布局高度那么简单。要修改视图的大小/外观,如复选框/单选按钮,请使用“背景”和“按钮”属性来指定您自己的绘图对象 这是一个较旧的页面,现在位置不同,但这会让您了解: 一个快速的黑客解决方案是缩小按钮的比例: <RadioButton android:scaleX="0.5" android:sca

我的应用程序中有许多
单选按钮。单选按钮对我来说太大了。有没有办法使它们变小?

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

可以做到,但不像编辑文本、按钮等那样设置布局宽度和布局高度那么简单。要修改视图的大小/外观,如复选框/单选按钮,请使用“背景”和“按钮”属性来指定您自己的绘图对象

这是一个较旧的页面,现在位置不同,但这会让您了解:


一个快速的黑客解决方案是缩小按钮的比例:

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

这对变小很有用


对于变大,这往往会导致从容器视图中进行一些剪裁,因此您可能必须硬编码射线组的高度/宽度以适应缩放按钮。按钮可绘制也会随着变大而明显像素化,因此如果您想要3倍大的东西,这并不是很好…

您可以使用scalex和scaley pr属性,然后使用translationX和translationY将其放入radiobutton窗口

<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" />

我用
切换按钮
重新设置了
单选按钮
,并应用了相同的样式。我确实覆盖了背景和按钮

    <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中,则需要自定义listener,选中

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

然后为
单选按钮设置
背景
,如

bg\u radio\u 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>
<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" />

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

我想您可以编写自己的控件,但请记住,将控件设置得太小可能会使某些用户在触摸模式下更难准确地点击控件。这会降低您应用程序的可用性。我找到了此解决方案,请参见我的答案。这可能不容易做到,但有可能做到;请参见“请勿使用nega回复”不确定地说“这不可能完成”等等!看,Michael有一个简单可行的解决方案!并添加了android:textSize=“[size]sp“也将缩放单选按钮标签,但匹配按钮和标签大小需要一些更硬的代码…缩小按钮大小,但在它们之间留有更大的空间。它不会缩放内部单选按钮样式。这是一个断开的链接。
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))