Radio Group의 Radio Button 그림, 텍스트 가운데 맞춤 해결 방법
2878 단어 그림RadioGroupRadioButton가운데 맞춤 불가
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final Drawable buttonDrawable = mButtonDrawable;
if (buttonDrawable != null) {
final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
final int height = buttonDrawable.getIntrinsicHeight();
int y = 0;
switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - height;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - height) / 2;
break;
}
buttonDrawable.setBounds(0, y, buttonDrawable.getIntrinsicWidth(), y + height);
buttonDrawable.draw(canvas);
}
}
2. 해결 방법: RadioButton을 계승하여 자신의 MyRadioButton 클래스를 구축한다.
public class MyRadioButton extends RadioButton{
private Context context;
private Drawable mButtonDrawable;
private int mButtonResource;
public MyRadioButton(Context context) {
super(context);
this.context = context;
}
public MyRadioButton(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
@Override
public void setButtonDrawable(int resid) {
if (resid != 0 && resid == mButtonResource) {
return;
}
mButtonResource = resid;
Drawable d = null;
if (mButtonResource != 0) {
d = getResources().getDrawable(mButtonResource);
}
setButtonDrawable(d);
}
@Override
public void setButtonDrawable(Drawable d) {
if (d != null) {
if (mButtonDrawable != null) {
mButtonDrawable.setCallback(null);
unscheduleDrawable(mButtonDrawable);
}
d.setCallback(this);
d.setState(getDrawableState());
d.setVisible(getVisibility() == VISIBLE, false);
mButtonDrawable = d;
mButtonDrawable.setState(null);
setMinHeight(mButtonDrawable.getIntrinsicHeight());
}
refreshDrawableState();
}
//
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final Drawable buttonDrawable = mButtonDrawable;
if (buttonDrawable != null) {
final int verticalGravity = getGravity()
& Gravity.VERTICAL_GRAVITY_MASK;
final int height = buttonDrawable.getIntrinsicHeight();
final int width = buttonDrawable.getIntrinsicWidth();
int y = 0;
switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - height;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - height) / 2;
break;
}
int x = 0;
x = (getWidth() - width) / 2;
buttonDrawable.setBounds(x, y, x + width, y + height);
buttonDrawable.draw(canvas);
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Processing] 클릭 포인트를 저장하고 아트 작품 그리기라고해도 가볍게 동작 설명을 마우스를 클릭하면 점이 기울어집니다. 첫 번째 점은 마우스의 위치를 목표로 계속 움직입니다. 선두 이외의 점은 1개전의 (선배에 해당하는 점)의 위치를 목표로 합니다 ⇒항상 움직이는 아트...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.