如何减小可在Android RadioButton上绘制的按钮的大小

时间:2018-11-27 07:53:11

标签: android

我有六个不同的图像,分别具有选定和未选定的版本。我想将这些图像变成单选按钮,所以我制作了100px x 100px的版本,以为单选按钮将其缩小到适当的单选按钮大小就足够了。我将RadioButton的{​​{1}}属性设置为xml drawables,并带有用于选中和未选中状态的选择器,并且使无线电组的方向为水平。

我得到一排大图像,其右侧被切掉。 是否有一种方法可以将RadioButton的按钮缩小到合理的大小,而不必制作更多可绘制对象?

我尝试将android:button属性设置为android:button,并将我的可绘制的选择器xmls应用于@null,但这不能使我的按钮行保持方形。我还尝试将按钮的layout_height强制设置为较小的数字,但随后它仅切掉了图像的顶部和底部,没有缩放比例。

作为一个附带的问题,为不同的DPI设置一堆按钮是否更好?我在哪里可以了解更多有关每个dpi比例/文件夹需要多大的东西?

更新

我使用了图形的原始svg文件,并将它们转换为VectorDrawables的开和关,应该可以轻松缩放,对吗?我无所适从,因为似乎没有人遇到这个问题,因为他们只是将可绘制对象的大小设为单选按钮所需的大小,因此不需要缩放。

1 个答案:

答案 0 :(得分:0)

在此上永久性地将头撞在墙上之后,我决定尝试制作自己的自定义单选按钮视图。事实证明,我所需要的最终变得超级简单!首先,我创建了一个新类,称为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));
}

将我正在使用的图像设置为单选按钮的背景,将文本设置为空,将按钮设置为null,这将完全按照我的需要工作,而不必制作不同大小的新可绘制对象。

此新的单选按钮不适用于垂直对齐的单选按钮,除非它们的宽度受到限制,并且由于背景被图形占用,因此不能有单独的背景。里面的文字看起来也很糟糕,但这对我来说仍然有效。