转载于:https://blog.csdn.net/weixin_36723200/article/details/53577015
设置Android中RadioButton的图片大小和位置
今天在使用RadioGroup时遇到一个问题,在布局文件中设置好RadioGroup后结果预览起来图片非常大,这根本不是我想要的效果。下面是解决问题的过程:
布局文件
<RadioGroup
android:id="@+id/rg_home"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rbtn_home_news"
style="@style/Style_home_Rbtn"
android:drawableTop="@drawable/selector_home_rbtn_news"
android:text="新闻"
/>
<RadioButton
android:id="@+id/rbtn_home_live"
style="@style/Style_home_Rbtn"
android:drawableTop="@drawable/selector_home_rbtn_live"
android:text="视频"
/>
<RadioButton
android:id="@+id/rbtn_home_tuijian"
style="@style/Style_home_Rbtn"
android:drawableTop="@drawable/selector_home_rbtn_tuijian"
android:text="推荐"
/>
<RadioButton
android:id="@+id/rbtn_home_me"
style="@style/Style_home_Rbtn"
android:drawableTop="@drawable/selector_home_rbtn_me"
android:text="我"
/>
</RadioGroup>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
效果:
这是因为RadioButton继承自button,当你给RadioButton设置图片背景时,图片会被拉伸,而导致得不到我们预期的效果。
而且RadioButton并没有设置相关属性来解决这个问题,设置固定宽高是没有用的。
那么怎么解决呢?
查了一下资料,发现一种解决办法:
在代码中如下设置即可:
private void initView() {
//定义底部标签图片大小和位置
Drawable drawable_news = getResources().getDrawable(R.drawable.selector_home_rbtn_news);
//当这个图片被绘制时,给他绑定一个矩形 ltrb规定这个矩形
drawable_news.setBounds(0, 0, 50, 50);
//设置图片在文字的哪个方向
rbtn_News.setCompoundDrawables(null, drawable_news, null, null);
//定义底部标签图片大小和位置
Drawable drawable_live = getResources().getDrawable(R.drawable.selector_home_rbtn_live);
//当这个图片被绘制时,给他绑定一个矩形 ltrb规定这个矩形
drawable_live.setBounds(0, 0, 50, 50);
//设置图片在文字的哪个方向
rbtn_Live.setCompoundDrawables(null, drawable_live, null, null);
//定义底部标签图片大小和位置
Drawable drawable_tuijian = getResources().getDrawable(R.drawable.selector_home_rbtn_tuijian);
//当这个图片被绘制时,给他绑定一个矩形 ltrb规定这个矩形
drawable_tuijian.setBounds(0, 0, 50, 50);
//设置图片在文字的哪个方向
rbtn_Tuijian.setCompoundDrawables(null, drawable_tuijian, null, null);
//定义底部标签图片大小和位置
Drawable drawable_me = getResources().getDrawable(R.drawable.selector_home_rbtn_me);
//当这个图片被绘制时,给他绑定一个矩形 ltrb规定这个矩形
drawable_me.setBounds(0, 0, 50, 50);
//设置图片在文字的哪个方向
rbtn_Me.setCompoundDrawables(null, drawable_me, null, null);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
这样就解决了这个问题。