下方是RadioGroup 点击时使用选择器,来修改背景图片和文字颜色
<RadioButton
android:id="@+id/home_page_rb"
style="@style/tab_menu_item"
android:background="@drawable/tab_line"
android:checked="true"
android:drawableTop="@drawable/tab_menu_page_home"
android:drawablePadding="7dp"
android:paddingTop="15dp"
android:text="首页" />
文字颜色:
tab_menu_text:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/home_tab_select" android:state_checked="true" />
<item android:color="@color/home_tab_normal" />
</selector>
图片变化:
tab_menu_page_home:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/icon_tab_home_home_select" android:state_checked="true" />
<item android:drawable="@mipmap/icon_tab_home_home_normal" />
</selector>
其他两个RadioButton,也是如此
RadioGroup 上方是自定义的viewpager,禁止了viewpager的滑动
viewpager上放置的是三个Fragment。
第一个Fragment:
class HomeFragment : Fragment(), Handler.Callback {
private val handler = Handler(this)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_home, null, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initListener()
//禁止下拉加载
home_refresh.isEnableLoadMore = false
}
private fun initListener() {
//下拉刷新
home_refresh.setOnRefreshListener {
//获取数据
getData()
}
}
/**
* 获取数据方法
*/
private fun getData() {
//假的数据加载效果
handler?.sendEmptyMessageDelayed(1, 2000)
}
override fun handleMessage(msg: Message): Boolean {
when (msg?.what) {
1 -> {
home_refresh.finishRefresh(true)
Toast.makeText(context, "刷新成功!", Toast.LENGTH_SHORT).show()
}
}
return false
}
}
还有一个就是adapter:
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public ArrayList<Fragment> mFragmentlist = null;
public void setDatas(ArrayList<Fragment> fragmentlist){
mFragmentlist = fragmentlist;
}
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return mFragmentlist.size();
}
@Override
public Object instantiateItem(ViewGroup vg, int position) {
return super.instantiateItem(vg, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// super.destroyItem(container, position, object);
}
@Override
public Fragment getItem(int position) {
return mFragmentlist.get(position);
}
}
下拉刷新使用的是:SmartRefreshLayout
源码地址:https://download.csdn.net/download/NewActivity/13159599
源码里忘记写控制checkbox图片尺寸了,代码如下:
private fun initRadioGroupSize() {
//dp转px
val pxValue = DensityUtil.dp2px(20f)
val drawableWeiHome: Drawable = resources.getDrawable(R.drawable.tab_menu_page_home)
drawableWeiHome.setBounds(0, 0, pxValue, pxValue)
home_page_rb.setCompoundDrawables(null, drawableWeiHome, null, null)
val drawableWeiMsg: Drawable = resources.getDrawable(R.drawable.tab_menu_page_msg)
drawableWeiMsg.setBounds(0, 0, pxValue, pxValue)
msg_page_rb.setCompoundDrawables(null, drawableWeiMsg, null, null)
val drawableWeiMine: Drawable = resources.getDrawable(R.drawable.tab_menu_page_mine)
drawableWeiMine.setBounds(0, 0, pxValue, pxValue)
mine_page_rb.setCompoundDrawables(null, drawableWeiMine, null, null)
}