gpt4 book ai didi

java - RadioGroup 扩展 RelativeLayout?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:04 29 4
gpt4 key购买 nike

我正在尝试为我的应用制作一个单选按钮网格,我了解到使用常规 RadioGroup 是不可能的因为它扩展了 LinearLayout 并且如果您尝试安排 RadioButtonsRadioGroup 中使用 RelativeLayout RadioGroup没有看到 ButtonsRelativeLayout里面.

所以为了解决这个问题,我想制作一个扩展 RelativeLayout 而不是 LinearLayout 的自定义 RadioGroup。

我该怎么做?

更新:我按照你说的做了,但我有这些错误,我不知道如何在类文件中修复:

Description Resource    Path    Location    Type
RadioGroup_checkedButton cannot be resolved or is not a field RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 81 Java Problem
The constructor RelativeLayout.LayoutParams(int, int, float) is undefined RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 265 Java Problem
The method setOnCheckedChangeWidgetListener(CompoundButton.OnCheckedChangeListener) is undefined for the type RadioButton RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 363 Java Problem
The method setOnCheckedChangeWidgetListener(null) is undefined for the type RadioButton RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 377 Java Problem
VERTICAL cannot be resolved to a variable RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 68 Java Problem
Widget_CompountButton_RadioButton cannot be resolved or is not a field RadioGroupRelative.java /BlockBall/src/com/stickfigs/blockball line 79 Java Problem

最佳答案

您需要从here 获取RadioGroup 的源代码, 将 LinearLayout 的所有条目替换为 RelativeLayout

将此代码添加到项目中的某个 xml 文件(通常其名称为 attrs.xml):

<resources>
<declare-styleable name="RadioGroup">
<attr name="android:checkedButton" />
</declare-styleable>
</resources>

用这些替换 RadioGroup 的构造函数:

public RadioGroup(Context context) {
super(context);
if (!isInEditMode()) {
init();
}
}

public RadioGroup(Context context, AttributeSet attrs) {
super(context, attrs);
if (!isInEditMode()) {
TypedArray attributes = context.obtainStyledAttributes(
attrs, R.styleable.RadioGroup, 0,
android.R.style.Widget_CompoundButton_RadioButton);

int value = attributes.getResourceId(R.styleable.RadioGroup_checkedButton,
View.NO_ID);
if (value != View.NO_ID) {
mCheckedId = value;
}

attributes.recycle();
init();
}
}

LayoutParams 内部类中删除以下构造函数:

public LayoutParams(int w, int h, float initWeight) {
super(w, h, initWeight);
}

将所有 setOnCheckedChangeWidgetListener() 方法调用替换为 setOnCheckedChangeListener() 方法。 重要:在这种情况下,无法从使用此小部件的代码中使用此方法。

还没有尝试过,但希望这会奏效。

关于java - RadioGroup 扩展 RelativeLayout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320125/

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