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

问题描述 投票:0回答:1

我有六个不同的图像,包括选定的和未选择的版本。我想将这些图像变成单选按钮,所以我制作了100px x 100px版本,认为单选按钮可以将它们缩小到合适的单选按钮大小。我将RadioButtonandroid:button属性设置为带有选择器的xml drawables,用于已检查和未检查状态,并且我将无线电组的方向设置为水平。

我得到一排大图像,右边被切掉了。有没有办法将RadioButton的按钮缩小到合理的大小,而不必制作更多的drawable?

我已经尝试将android:button属性设为@null,并将我的drawable,selector,xmls应用于android:background,但这并不能使我的按钮行保持正方形。我也尝试强制按钮的layout_height为一个较小的数字,但它只是切断图像的顶部和底部,没有缩放。

作为一个附带问题,为不同的DPI设置一组按钮版本会更好吗?在哪里可以了解更多关于每个dpi规模/文件夹需要多大的东西?

Update

我使用了原始svg文件,我使用了图形并将它们转换为开启和关闭的VectorDrawables,它应该能够轻松扩展,对吧?我不知道该做什么,因为没有人似乎有这个问题,因为他们只是使他们的drawables他们所需的单选按钮,所以不需要缩放。

android
1个回答
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));
}

使用我设置的图像作为radiobutton的背景,文本为空,按钮为null,这完全按照我的需要工作,而不必制作不同大小的新drawable。

这个新的单选按钮不适用于垂直对齐的单选按钮,除非它们的宽度受到约束,并且由于背景被图形占用,因此它不能具有单独的背景。它的文字看起来也很糟糕,但这对我来说现在很有用。

© www.soinside.com 2019 - 2024. All rights reserved.