我的应用中有很多RadioButton
个。 RadioButtons对我来说太大了。有没有办法让它们变小?
答案 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
的大小更改为您想要的任何大小,但可能难以点击,因为点击区域非常小。
为了增加点击区域,我们可以使用这个函数(注意填充将不起作用,因为我们使用了 background
的 RadioButton
属性)(来自 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)
有另一种方法可以更改大小。 从矢量资产中选中和取消选中导入单选按钮。
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”属性
图中第一个是自定义单选按钮,第二个是默认单选按钮
答案 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" />
...
希望对某人有所帮助