如何在代码中动态改变radioButton的文字位置?

时间:2023-02-10 20:48:03
我在代码中为radioGroup生成了若干个radioButton,如下图所示:
如何在代码中动态改变radioButton的文字位置?
现在我希望将显示方式改为如下图所示,应该在代码中怎么修改?
如何在代码中动态改变radioButton的文字位置?
注意:我不是在XML中定义的radioGroup和radioButton,而是动态添加的

10 个解决方案

#1


android:drawableBottom setCompoundDrawablesWithIntrinsicBounds(int,int,int,int) The drawable to be drawn below the text. 

把你的数字换成图片 用这个属性试试看

#2


引用 1 楼 shen332401890 的回复:
android:drawableBottom setCompoundDrawablesWithIntrinsicBounds(int,int,int,int) The drawable to be drawn below the text. 

把你的数字换成图片 用这个属性试试看

谢谢回复,不过这些6、7、8之类的数字是要根据其他内容动态决定的,没办法换成图片。

#3


自己做一个带选中状态的drawable,然后把这个drawable设置成radio button的drawableTop,再去掉系统自带的button

#4


引用 3 楼 youngc527 的回复:
自己做一个带选中状态的drawable,然后把这个drawable设置成radio button的drawableTop,再去掉系统自带的button

是要在代码中设置,不是在XML中设置
我试了试这样做:

rb.setButtonDrawable(null);
rb.setCompoundDrawablesWithIntrinsicBounds(0,android.R.drawable.btn_radio,0, 0);

但是仍然有问题,如下图所示:
如何在代码中动态改变radioButton的文字位置?

#5


刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

#6


lz你要的是不是类似这样动态添加的代码?
RadioGroup rg = new RadioGroup(this);
    rg.setOrientation(RadioGroup.HORIZONTAL);
    String[] titles = new String[7];
    titles[0] = "热门";
    titles[1] = "投资";
    titles[2] = "融资";
    titles[3] = "合作";
    titles[4] = "新品";
    titles[5] = "招聘";
    titles[6] = "求职";
    
    for(int i=0; i<titles.length; i++)
    {
     RadioBtnEx btn = new RadioBtnEx(this);
     btn.setTextSize(20);
     RadioGroup.LayoutParams btnParam = new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     btnParam.leftMargin = 10;
     btnParam.topMargin = 2;
     btn.setText(titles[i]);
     rg.addView(btn, btnParam);
    }

#7


引用 5 楼 youngc527 的回复:
刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

不行的,4楼图中那个多余的蓝点仍然存在

#8


引用 6 楼 inzaghi97 的回复:
lz你要的是不是类似这样动态添加的代码?
RadioGroup rg = new RadioGroup(this);
    rg.setOrientation(RadioGroup.HORIZONTAL);
    String[] titles = new String[7];
    titles[0] = "热门";
    titles[1] = "投资";
    titles[2] = "融资";
    titles[3] = "合作";
    titles[4] = "新品";
    titles[5] = "招聘";
    titles[6] = "求职";
    
    for(int i=0; i<titles.length; i++)
    {
     RadioBtnEx btn = new RadioBtnEx(this);
     btn.setTextSize(20);
     RadioGroup.LayoutParams btnParam = new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     btnParam.leftMargin = 10;
     btnParam.topMargin = 2;
     btn.setText(titles[i]);
     rg.addView(btn, btnParam);
    }

这个不行,它实现的是radiogroup内部的各个radiobutton的横向排列,但是做不出图1所示的效果,每个radiobutton中,字仍然是在图片的右边,而不是图1所示的下面。

#9


引用 7 楼 qianru08 的回复:
Quote: 引用 5 楼 youngc527 的回复:

刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

不行的,4楼图中那个多余的蓝点仍然存在


引用 7 楼 qianru08 的回复:
Quote: 引用 5 楼 youngc527 的回复:

刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

不行的,4楼图中那个多余的蓝点仍然存在

是我弄错了,4楼的方法是可以的,功能已经实现了。

#10


求例子。。。

#1


android:drawableBottom setCompoundDrawablesWithIntrinsicBounds(int,int,int,int) The drawable to be drawn below the text. 

把你的数字换成图片 用这个属性试试看

#2


引用 1 楼 shen332401890 的回复:
android:drawableBottom setCompoundDrawablesWithIntrinsicBounds(int,int,int,int) The drawable to be drawn below the text. 

把你的数字换成图片 用这个属性试试看

谢谢回复,不过这些6、7、8之类的数字是要根据其他内容动态决定的,没办法换成图片。

#3


自己做一个带选中状态的drawable,然后把这个drawable设置成radio button的drawableTop,再去掉系统自带的button

#4


引用 3 楼 youngc527 的回复:
自己做一个带选中状态的drawable,然后把这个drawable设置成radio button的drawableTop,再去掉系统自带的button

是要在代码中设置,不是在XML中设置
我试了试这样做:

rb.setButtonDrawable(null);
rb.setCompoundDrawablesWithIntrinsicBounds(0,android.R.drawable.btn_radio,0, 0);

但是仍然有问题,如下图所示:
如何在代码中动态改变radioButton的文字位置?

#5


刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

#6


lz你要的是不是类似这样动态添加的代码?
RadioGroup rg = new RadioGroup(this);
    rg.setOrientation(RadioGroup.HORIZONTAL);
    String[] titles = new String[7];
    titles[0] = "热门";
    titles[1] = "投资";
    titles[2] = "融资";
    titles[3] = "合作";
    titles[4] = "新品";
    titles[5] = "招聘";
    titles[6] = "求职";
    
    for(int i=0; i<titles.length; i++)
    {
     RadioBtnEx btn = new RadioBtnEx(this);
     btn.setTextSize(20);
     RadioGroup.LayoutParams btnParam = new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     btnParam.leftMargin = 10;
     btnParam.topMargin = 2;
     btn.setText(titles[i]);
     rg.addView(btn, btnParam);
    }

#7


引用 5 楼 youngc527 的回复:
刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

不行的,4楼图中那个多余的蓝点仍然存在

#8


引用 6 楼 inzaghi97 的回复:
lz你要的是不是类似这样动态添加的代码?
RadioGroup rg = new RadioGroup(this);
    rg.setOrientation(RadioGroup.HORIZONTAL);
    String[] titles = new String[7];
    titles[0] = "热门";
    titles[1] = "投资";
    titles[2] = "融资";
    titles[3] = "合作";
    titles[4] = "新品";
    titles[5] = "招聘";
    titles[6] = "求职";
    
    for(int i=0; i<titles.length; i++)
    {
     RadioBtnEx btn = new RadioBtnEx(this);
     btn.setTextSize(20);
     RadioGroup.LayoutParams btnParam = new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     btnParam.leftMargin = 10;
     btnParam.topMargin = 2;
     btn.setText(titles[i]);
     rg.addView(btn, btnParam);
    }

这个不行,它实现的是radiogroup内部的各个radiobutton的横向排列,但是做不出图1所示的效果,每个radiobutton中,字仍然是在图片的右边,而不是图1所示的下面。

#9


引用 7 楼 qianru08 的回复:
Quote: 引用 5 楼 youngc527 的回复:

刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

不行的,4楼图中那个多余的蓝点仍然存在


引用 7 楼 qianru08 的回复:
Quote: 引用 5 楼 youngc527 的回复:

刚才大概看了一下RadioButton的代码,好像是通过setButtonDrawable不能将button设置成null
试试通过xml把button设置成null

如果你需要通过代码生成一个RadioButton的话,可以这样

1. 定义XML
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:button="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2. 创建RadioButton
RadioButton newButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.radio_without_button, parent, false);

不行的,4楼图中那个多余的蓝点仍然存在

是我弄错了,4楼的方法是可以的,功能已经实现了。

#10


求例子。。。