我有六个不同的图像,包括选定的和未选择的版本。我想将这些图像变成单选按钮,所以我制作了100px x 100px版本,认为单选按钮可以将它们缩小到合适的单选按钮大小。我将RadioButton
的android:button
属性设置为带有选择器的xml drawables,用于已检查和未检查状态,并且我将无线电组的方向设置为水平。
我得到一排大图像,右边被切掉了。有没有办法将RadioButton的按钮缩小到合理的大小,而不必制作更多的drawable?
我已经尝试将android:button
属性设为@null
,并将我的drawable,selector,xmls应用于android:background
,但这并不能使我的按钮行保持正方形。我也尝试强制按钮的layout_height为一个较小的数字,但它只是切断图像的顶部和底部,没有缩放。
作为一个附带问题,为不同的DPI设置一组按钮版本会更好吗?在哪里可以了解更多关于每个dpi规模/文件夹需要多大的东西?
我使用了原始svg文件,我使用了图形并将它们转换为开启和关闭的VectorDrawables,它应该能够轻松扩展,对吧?我不知道该做什么,因为没有人似乎有这个问题,因为他们只是使他们的drawables他们所需的单选按钮,所以不需要缩放。
在我的头撞到墙上后,我决定尝试制作自己的自定义单选按钮视图。事实证明,我需要的东西最终变得非常简单!首先,我创建了一个新类,称为ImageRadioButton,然后扩展AppCompatRadioButton。我只需要覆盖onMeasure
方法并读取单选按钮的尝试宽度,并将高度设置为宽度的宽高比。像这样的东西:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int desiredWidth = MeasureSpec.getSize(widthMeasureSpec);
Drawable drawable = getBackground();
float aspectRatio = (float)drawable.getIntrinsicHeight() / (float)drawable.getIntrinsicWidth();
setMeasuredDimension(desiredWidth, (int)(desiredWidth * aspectRatio));
}
使用我设置的图像作为radiobutton的背景,文本为空,按钮为null,这完全按照我的需要工作,而不必制作不同大小的新drawable。
这个新的单选按钮不适用于垂直对齐的单选按钮,除非它们的宽度受到约束,并且由于背景被图形占用,因此它不能具有单独的背景。它的文字看起来也很糟糕,但这对我来说现在很有用。