1.首先定义一个布局,一般为LinearLayout,设置高度,这个高度也就是底部标签栏的高度。设置这个布局在整个父布局的底部即alignParentBottom=“true”

2.在LinearLayout下定义RadioGroup,设置其方向为horizontal,其下可以定义多个RadioButton(圆形单选框)。

3.对于每一个radioButton均可设置属性,一般会设置每个radioButton的权重为1,这样它们会在整个布局里面均匀分布,但是此时由于设置的整体方向是水平的,所以需要设置layout_width=”0dp”。

4.XML文件里面可以设置每一个RadioButton的选中状态,一般将第一个按钮设置为选中状态android:checked=”true”,如果将第一个和第二个radioButton都设置为选中状态,那么只有第二个是选中,在代码里面如果要设置RadioButton的选中状态要调用方法,yourButton.setChecked(true)

5.一般会自己给radioButton的文字上面加上图片,如微信一样,这时候要设置其默认的button为null,即android:button=“@null”,接着设置android:drawableTop=”@drawable/yourPicture”,如果在左边加则设置drawableLeft,如果觉得图片与文字距离太近,可设置drawablePadding,

6.这时候会遇到一个问题,图片可能太大了,显示出来不好看,如图:

android按钮左下方 安卓底部按钮_安卓

,但是xml文件不能设置其大小,我们可以在代码里面更改:

Drawable drawableHome = getResources().getDrawable(R.drawable.sel_bottom_home);

drawableHome.setBounds(left, top, right, bottom);//第一个参数左右边距离,第二个是上下距离,第三个则是设置图片的宽度,第四个是设置图片的高度,drawableHome.setBounds(0, 0, 50, 50),具体数字多少得试过才知道哪个合适。改完后看效果

android按钮左下方 安卓底部按钮_android_02


7.这样还不够完美,我们得让用户知道自己点击了button,所以就得在点击之后让RadioButton变化一下,一般app会让图片和字体颜色都跟着变。就像上图一样,没有点击的时候文字和图片都是灰色的,点击后就变成红色了。这是因为我们设置了图片和文字的按下和未按下的状态。如果想让照片变色,我们就不能直接设置drawableTop=“picure”,为一张图片。而是需要在app/src/main/res/drawable下创建资源文件。

android按钮左下方 安卓底部按钮_资源文件_03

点击添加selector资源文件,并命名

android按钮左下方 安卓底部按钮_android按钮左下方_04

设置按下的图片和未按下的图片`

<item android:state_checked="true" android:drawable="@drawable/pic_home_red" ></item>
<item android:state_checked="false" android:drawable="@drawable/pic_home_grey" ></item>

,item里面的图片是放在drawable-xxxxx下的图片,接在设置drawableTop=“@drawable/刚刚创建的selector的名字”,就可以了。
8.如果想让文字变色,则不能创建图片资源了,要创建颜色资源文件,一般as里面是没有color文件夹的,所以需要在app/src/main/res下创建color文件夹,再右击color创建color资源文件

<item android:state_checked="true" android:color="@color/colorFontBottomRed" ></item>
<item android:state_checked="false" android:color="@color/colorFontGrey" ></item>

`item里面是自己在values/color/下定义的颜色值,接着就可以实现自己想要的效果了。