版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaihaohao1/article/details/82865903
效果图
思路:
单选框实现底部菜单的切换
在代码中监听单选框选中的是那个菜单,显示对应的fragment
fragment使用show()和hide()实现切换
在MainActivity中:
package com.zhh.android;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class MainActivity extends FragmentActivity {
// 单选框布局
private RadioGroup radioGroup;
// 单选框1
private RadioButton rbProject;
// 单选框2
private RadioButton rbData;
// 单选框3
private RadioButton rbMine;
// fragment标记
public static final String fragment1Tag = "fragment1";
public static final String fragment2Tag = "fragment2";
public static final String fragment3Tag = "fragment3";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initOnclick();
}
public void initView() {
radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
rbProject = (RadioButton)findViewById(R.id.rbProject);
rbData = (RadioButton)findViewById(R.id.rbData);
rbMine = (RadioButton)findViewById(R.id.rbMine);
firstShow();
}
public void initOnclick() {
// 单选框的点击事件,判断哪一个选中
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// 用对应的标记在内存中找对应的Fragment对象
Fragment blankFragment1 = fragmentManager.findFragmentByTag(fragment1Tag);
Fragment blankFragment2 = fragmentManager.findFragmentByTag(fragment2Tag);
Fragment blankFragment3 = fragmentManager.findFragmentByTag(fragment3Tag);
if (blankFragment1 != null) {
fragmentTransaction.hide(blankFragment1);
}
if (blankFragment2 != null) {
fragmentTransaction.hide(blankFragment2);
}
if (blankFragment3 != null) {
fragmentTransaction.hide(blankFragment3);
}
switch (checkedId) {
case R.id.rbProject:
Log.e("111", "button1");
if (blankFragment1 == null) {
blankFragment1 = new HomeFragment();
fragmentTransaction.add(R.id.activity_main_framlayout, blankFragment1, fragment1Tag);
} else {
fragmentTransaction.show(blankFragment1);
}
break;
case R.id.rbData:
if (blankFragment2 == null) {
blankFragment2 = new DataFragment();
fragmentTransaction.add(R.id.activity_main_framlayout, blankFragment2, fragment2Tag);
} else {
fragmentTransaction.show(blankFragment2);
}
break;
case R.id.rbMine:
if (blankFragment3 == null) {
blankFragment3 = new AppMineFragment();
fragmentTransaction.add(R.id.activity_main_framlayout, blankFragment3, fragment3Tag);
} else {
fragmentTransaction.show(blankFragment3);
}
break;
}
fragmentTransaction.commit();
}
});
}
/**
* 初始化时显示的fragment
*/
private void firstShow(){
//实例化fragment对象
HomeFragment blankFragment1 = new HomeFragment();
// 获取fragment管理器,并显示fragment,传入一个记号
getSupportFragmentManager().beginTransaction().add(R.id.activity_main_framlayout,blankFragment1,fragment1Tag).commit();
}
}
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.linkgap.butler.MainActivity">
<!-- 显示fragment的布局-->
<FrameLayout
android:layout_width="match_parent"
android:layout_weight="1"
android:id="@+id/activity_main_framlayout"
android:layout_height="0dp">
</FrameLayout>
<!--底部菜单-->
<RadioGroup
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="#FFFFFF"
android:id="@+id/radioGroup"
android:layout_height="wrap_content">
<!-- 首页-->
<RadioButton
android:id="@+id/rbProject"
android:text="首页"
android:button="@null"
android:gravity="center"
android:textSize="12sp"
android:drawablePadding="2dp"
android:padding="7dp"
android:checked="true"
android:drawableTop="@drawable/selector_project"
android:layout_width="0dp"
android:textColor="@drawable/selector_textcolor"
android:layout_weight="1"
android:layout_height="wrap_content" />
<!-- 数据分析-->
<RadioButton
android:id="@+id/rbData"
android:text="数据分析"
android:button="@null"
android:gravity="center"
android:textSize="12sp"
android:drawablePadding="2dp"
android:padding="7dp"
android:drawableTop="@drawable/selector_message"
android:layout_width="0dp"
android:textColor="@drawable/selector_textcolor"
android:layout_weight="1"
android:layout_height="wrap_content" />
<!-- 我的-->
<RadioButton
android:id="@+id/rbMine"
android:text="我的"
android:button="@null"
android:gravity="center"
android:textSize="12sp"
android:drawablePadding="2dp"
android:padding="7dp"
android:drawableTop="@drawable/selector_mine"
android:layout_width="0dp"
android:textColor="@drawable/selector_textcolor"
android:layout_weight="1"
android:layout_height="wrap_content"
/>
</RadioGroup>
</LinearLayout>
单选框对应的图片选择器
selector_project.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/project_fill" android:state_checked="true"></item>
<item android:drawable="@mipmap/project"></item>
</selector>
单选框对应的文字选择器
selector_textcolor
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="#4395FF"/>
<item android:color="#666666"/>
</selector>
创建三个fragment类,分别是
AppMineFragment
DataFragment
HomeFragment
源码下载:
https://download.csdn.net/download/zhaihaohao1/10690724