Android编程:如何在RadioGroup的按钮之间添加Padding?

14

我在xml中有一个单选按钮组,这些按钮是通过编程动态生成的。如何在编程时在按钮之间添加间距。

我认为可能需要使用LayoutParams,但我的对象没有明显的setPaddingsetMargins方法。

这是我尝试的代码:

RadioButton currentButton = new RadioButton(context);
            currentButton.setText(item.getLabel());
            currentButton.setTextColor(Color.BLACK);

            //add padding between buttons
            LayoutParams params = new LayoutParams(context, null);
            params. ... ??????
            currentButton.setLayoutParams(params);
1个回答

27

内边距

普通的LayoutParams没有应用内边距的方法,但视图有。由于RadioButton是View的子类,因此您可以使用View.setPadding(),例如像这样:

currentButton.setPadding(0, 10, 0, 10);

这会在顶部和底部添加10px的填充。如果你想使用除px以外的其他单位(例如dp),你可以先使用TypedValue.applyDimension()将它们转换为像素。

边距

边距应用于某些特定的LayoutParams类,这些类是MarginLayoutParams的子类。在设置边距时,请确保使用特定的子类,例如RadioGroup.LayoutParams,而不是通用的ViewGroup.LayoutParams (当您的父布局是RadioGroup时)。然后,您可以简单地使用MarginLayoutParams.setMargins()

示例:

RadioGroup.LayoutParams params 
           = new RadioGroup.LayoutParams(context, null);
params.setMargins(10, 0, 10, 0);
currentButton.setLayoutParams(params);

4
你好。我尝试了上面的边距代码,但它没有起作用。按钮紧挨着排列,没有间距。 - Taras
我认为默认的填充值大约是10,所以当你给出10个填充时,你不会注意到它,尝试一些更大的值,比如40,你就会看到它起作用了。 - Serdar Samancıoğlu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接