Android, 如何以编程方式设置RadioButton按钮的左填充?

5

我使用

appMusicTab.setButtonDrawable(R.drawable.all); 

如何设置RadioButton的按钮样式?

但是,可绘制对象始终与RadioGroup左对齐。我该如何在代码中为“按钮”设置左填充?谢谢!

我已经尝试过

appMusicTab.setPadding(20, 0, 0, 0);

并且:

  appMusicTab.setLeft(20);

但是这些都没有起作用。

这是我的代码:

       RadioButton appMusicTab = new RadioButton(mContext);

        appMusicTab.setText(tabInfo.name);
        appMusicTab.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 25);
        appMusicTab.setGravity(Gravity.CENTER);
        appMusicTab.setId(tabInfo.id);
//        appMusicTab.setButtonDrawable(android.R.color.transparent);
        appMusicTab.setButtonDrawable(R.drawable.all);

        appMusicTab.setBackgroundResource(R.drawable.app_tab_bg);
        appMusicTab.setPadding(30, 0, 0, 0);
        RadioGroup.LayoutParams lp =
            new RadioGroup.LayoutParams(
                    RadioGroup.LayoutParams.MATCH_PARENT,
                    RadioGroup.LayoutParams.WRAP_CONTENT);
        lp.bottomMargin =MASettings.MAIN_UI_APP_TAB_MARGIN_BOTTOM;


        mAppsTab.addView(appMusicTab, lp); //mAppsTab is a RadioGroup
2个回答

3

我使用带有一些透明填充的图标来解决这个问题。我查看了RadioButton源代码,发现在代码中将按钮Drawable的左填充设置为0:buttonDrawable.setBounds(0, y, buttonDrawable.getIntrinsicWidth(), y + height);


2

为此,您需要设置LayoutParams。

请参见以下内容:

qButt = new Button(this);
qButt.setPadding(0, 0, 0, 0);
TableRow.LayoutParams params = new TableRow.LayoutParams(BtnHeight,BtnHeight); // You can set any Layout params in Place of TableRow
YourParentLayout.addView(qButt,params); // Your parent layout may be any Layout in xml

这里我添加了一个按钮而不是单选按钮。您可以使用单选按钮做同样的事情。 - Shreyash Mahajan
谢谢IDroid,但是setPadding()在这里似乎不起作用。我已经在问题中更新了我的代码。 - herbertD
2
我发现setPadding对其中的文本产生影响,而不是radiobutton中的按钮。 - herbertD
尝试在上面的代码中使用FILL_PARENT或WRAP_CONTENT代替MATCH_PARENT,看看会发生什么? - Shreyash Mahajan
我使用了一个带有一些透明填充的图标来解决这个问题。我检查了RadioButton源代码,并发现按钮Drawable的左填充已在代码中设置为0:buttonDrawable.setBounds(0,y,buttonDrawable.getIntrinsicWidth(),y + height)。 - herbertD

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