gpt4 book ai didi

android - 以编程方式将单选按钮对齐到单选组中的中心

转载 作者:行者123 更新时间:2023-11-30 03:24:25 26 4
gpt4 key购买 nike

我有一个单选按钮需要放在单选组的中心。

这是我的代码:

RadioImageButton RadioImageButton = new RadioImageButton(activity);
RadioImageButton.setGravity(Gravity.CENTER);
RadioImageButton.setId(buttonId);
RadioImageButton.setTextColor(Color.BLACK);
RadioImageButton.setButtonDrawable(icon); // this is where i am replacing the default circle with an image
RadioImageButton.setBackgroundDrawable(drawable);
RadioGroup.LayoutParams radioImageButtonParams = new RadioGroup.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT, 1f);
radioImageButtonParams.setMargins(0, 0, 1, 0);

RadioGroup.addView(RadioImageButton, radioImageButtonParams);

在 RadioImageButton 类中

Drawable image;

public RadioImageButton(Context context) {
super(context);
setButtonDrawable(android.R.color.transparent);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

if (image != null) {
image.setState(getDrawableState());

final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
final int height = image.getIntrinsicHeight();

int y = 0;

switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - height;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - height) / 2;
break;
}

int buttonWidth = image.getIntrinsicWidth();
int buttonLeft = (getWidth() - buttonWidth) / 3;
image.setBounds(buttonLeft, y, buttonLeft + buttonWidth, y + height);
image.draw(canvas);
}
}

目前是这样的:

radiobutton  ------  text 

文本只放在中间但单选按钮没有我希望文本和单选按钮都放在中间。

最佳答案

在 TerrilThomas 的帮助下,我解决了这个问题:

解决方法如下:

RadioImageButton.setButtonDrawable(icon); // Not proper way

不要将图标传递到按钮内,而是将其传递到 compund drawable 方法(如果任何单选按钮都可以)。

RadioImageButton.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom)//用它来设置图标

感谢 TerrilThomas,干杯

关于android - 以编程方式将单选按钮对齐到单选组中的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18503902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com