RadioGroup+FrameLayout实现底部导航页面

 

这是非常常见的底部导航页面,以前写的时候非常流畅的就能写出来,但是今天用的时候居然写了好长时间,所以感觉还是写到csdn上吧,别过几个月再用再忘得一干二净的;

 

首先说下布局,下面是RadioGroup,设置横向排序,里面放四个RadioButton,宽度设置等分;

里面放一个背景图片,然后设置状态选择器,然后设置文字,仍然设置一个状态选择器;

 

    <!--主页RadioButton的样式-->
    <style name="sytle_RadioButton">

        <item name="android:layout_width">0dp</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_weight">1</item>
        <item name="android:background">@null</item>
        <item name="android:button">@null</item>
        <item name="android:drawablePadding">3dp</item>
        <item name="android:gravity">center_horizontal</item>

    </style>

 

 

上面就是一个FrameLayout,通过点击下面的RadioButton用不同的Fragment替换FrameLayout布局;

activity的布局就不粘了,因为里面都是抽取的样式,和@string @color 就算粘出来也看不清,到最后会提供免费的源码,需要的朋友们可以免费下载

 

这里我们先看下activity的代码:

 

public class MainActivity extends BaseActivity implements RadioGroup.OnCheckedChangeListener {

    private RadioGroup mRadioGroup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {

        mRadioGroup= (RadioGroup) findViewById(R.id.radioGroup);

        mRadioGroup.setOnCheckedChangeListener(this);

        //默认第一个为选中
        mRadioGroup.check(R.id.btn_home);
    }

    @Override
    /**
     * 响应选择改变的监听
     * @ checkedId 是当前选中的RadioButton的ID值
     */
    public void onCheckedChanged(RadioGroup group, int checkedId) {

        Fragment fragment= FragmentFactory.createFragment(checkedId);

        //使用指定的fragment切换当前页面
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.frameLayout,fragment)
                .commit();

    }
}


是不是也非常非常的简单,但是就是这么简单的东西愣是卡了好长时间,看着网上很多哥们的代码真心看不懂,各种选择各种判断;

 

对了,最后给大家说下RadioButton里面图片的问题,其实上次一口气写完是不假,为什么印象不深呢?

因为当时图标切的比较大,写RadioButton里面直接把字压到屏幕外面了,所以哥们当时就想把图片宽高设置的小一点,结果各种搜,各种问,到最后都不能实现...

到最后还特意打电话请教了一位姓马的大神,给我说没办法设置,让UI把图切的小点,当时想:这么坑,不用这种方式了;

今天终于找到方法破解了,就是将图片放到xhdip或者xxhdip中,图标就能变小;


点击打开链接免费下载源码

  

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Android底部导航栏的实现可以通过使用RadioGroup和Fragment结合使用来实现。首先,在布局文件中添加一个RadioGroup,然后在其中添加多个RadioButton,每个RadioButton代表一个导航项。接着,使用Fragment来实现每个导航项对应的页面内容。在RadioGroup中设置监听器,当用户点击某个RadioButton时,切换到对应的Fragment页面。这样就可以实现一个简单的底部导航栏了。 ### 回答2: Android底部导航栏的实现一般可以通过RadioGroup和Fragment结合使用来完成。首先,在XML布局文件中定义一个RadioGroup,并在其中添加多个RadioButton,每个RadioButton对应导航栏中的一个选项。 接下来,在Activity中,我们需要定义一个Fragment的容器,用于加载不同的Fragment页面。在RadioGroup的选择监听器中,根据所选中的RadioButton的id,切换对应的Fragment页面。 在切换Fragment页面时,可以使用FragmentManager和FragmentTransaction来实现。通过FragmentManager的beginTransaction()方法获取一个FragmentTransaction的实例,然后使用replace()方法将容器中的Fragment替换为选中的目标Fragment,最后通过commit()方法提交事务即可完成页面切换。 为了方便管理和切换Fragment,可以定义一个Fragment的集合,用于存放所有的Fragment实例,并在选择监听器中根据RadioButton的顺序获取对应的Fragment。 另外,为了保持Fragment的状态,在切换Fragment时可以使用hide()和show()方法而不是replace()来隐藏和显示Fragment,这样可以避免Fragment被重复实例化。 总结来说,通过RadioGroup和Fragment的结合使用,我们可以实现Android底部导航栏的功能。通过监听RadioGroup中RadioButton的选择事件,来切换不同的Fragment页面。这样可以实现底部导航栏的选项切换,同时保持Fragment的状态。 ### 回答3: Android底部导航栏的实现可以通过使用RadioGroup和Fragment来实现。 首先,我们可以在布局文件中创建一个包含多个RadioButton的RadioGroup,这些RadioButton将作为底部导航栏的按钮。我们可以为每个RadioButton设置图标和文本,以表示不同的导航选项。通过设置RadioGroup的布局属性可以将其放置在屏幕的底部。 接下来,我们需要创建对应的Fragment,并在Activity中使用FragmentTransaction来进行Fragment的切换。在FragmentTransaction中,我们可以通过调用replace方法来替换Activity中的显示内容,将选中的RadioButton对应的Fragment显示出来。 当用户点击底部导航栏的RadioButton时,我们可以通过设置RadioGroup的OnCheckedChangeListener来监听选中项的变化。当选中项发生变化时,我们可以获取选中的RadioButton对应的Fragment,并使用FragmentTransaction来进行Fragment的切换,从而显示选中的Fragment。 此外,为了更好地控制底部导航栏的切换效果,我们还可以使用fragment的缓存机制以提高切换的效率,避免每次切换都重新创建Fragment对象。 总之,通过结合RadioGroup和Fragment的使用,我们可以方便地实现Android底部导航栏的功能,使用户可以方便地在不同的导航选项之间进行切换。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值