Android kotlin学习记录1 侧边栏

1.侧边栏

做了一个项目需要使用侧边栏,本来觉得很难实现,被navigation给框住了,加上框架使用的bottomnavigationbar,所以在网上查找让bottomnavigationbar放到侧边的方式,后面发现行不通。后来大神通过radiogroup自己“制作”了一个侧边栏布局如下:

<RadioGroup
    android:id="@+id/menuGroup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <RadioButton
        android:id="@+id/menuHome"
        style="@style/menu_radio"
        android:drawableTop="@drawable/menu_home"
        android:text="@string/menu_home" />

    <RadioButton
        android:id="@+id/menuDevice"
        style="@style/menu_radio"
        android:layout_marginTop="32dp"
        android:drawableTop="@drawable/menu_equip"
        android:text="@string/menu_equip" />
    <RadioButton
        android:id="@+id/menuSet"
        style="@style/menu_radio"
        android:layout_marginTop="32dp"
        android:drawableTop="@drawable/menu_setting"
        android:text="@string/menu_setting" />
    <RadioButton
        android:id="@+id/menuMore"
        style="@style/menu_radio"
        android:layout_marginTop="32dp"
        android:drawableTop="@drawable/menu_more"
        android:text="@string/menu_more" />
</RadioGroup>

后面通过fragmentmanager实现了和navigation相同的效果

代码如下:

  binding.menuGroup.setOnCheckedChangeListener { _, i ->
        when (i) {
            R.id.menuHome -> {
                changeFragment("home")
            }
            R.id.menuDevice -> {
                changeFragment("equip")
            }
            R.id.menuSet -> {
                changeFragment("setting")
            }
            R.id.menuMore -> {
                changeFragment("more")
            }
        }
    }
    binding.menuHome.isChecked = true
}

fun changeFragment(tag: String) {
    var fts = supportFragmentManager.beginTransaction()
    when (tag) {
        "more" -> {
            fts.replace(binding.mainContent.id, MoreFragment())
        }
        "home" -> {
            fts.replace(binding.mainContent.id, HomeFragment())
        }
        "equip" -> {
            fts.replace(binding.mainContent.id, EquipFragment())
        }
        "setting" -> {
            fts.replace(binding.mainContent.id, SettingFragment())
        }
        "language"->{
            fts.replace(binding.mainContent.id,MoreLanguageFragment())
        }
        "soft"->{
            fts.replace(binding.mainContent.id,SettingStartStopFragment())
        }
        "run_time"->{
            fts.replace(binding.mainContent.id,SettingRunningTimeFragment())
        }
        "error_message"->{
            fts.replace(binding.mainContent.id,SettingErrorMessagesFragment())
        }
    }
    fts.commit()
}

menugroup是RadioGroup的id,后面写了一个tag是以为界面太多,写一个方法直接调用比较方便

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值