常用RadioGroup+Fragment点击切换,RadioButton图标设置自己想要的位置及大小
来源:互联网 发布:linux echo命令颜色 编辑:程序博客网 时间:2024/06/05 23:44
1.定义Fragment基类import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentTransaction;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import butterknife.ButterKnife;import butterknife.Unbinder;/** * Created by Json on 2017/9/23. */public abstract class BaseFragment extends Fragment implements View.OnClickListener{ private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN"; public FragmentActivity mActivity; private Unbinder bind; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mActivity = getActivity(); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = inflater.inflate(getLayoutId(), container, false); bind = ButterKnife.bind(this, rootView); if (savedInstanceState!=null){ boolean isSupportHidden=savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN); FragmentTransaction ft=getFragmentManager().beginTransaction(); if (isSupportHidden){ ft.hide(this); }else { ft.show(this); } ft.commit(); } return rootView; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { initView(); initData(); initListener(); super.onViewCreated(view, savedInstanceState); } @Override public void onSaveInstanceState(Bundle outState) { outState.putBoolean(STATE_SAVE_IS_HIDDEN,isHidden()); super.onSaveInstanceState(outState); } @Override public void onDestroyView() { super.onDestroyView(); bind.unbind(); } protected abstract void initView(); protected abstract void initData(); protected abstract void initListener(); public abstract int getLayoutId() ;}2.根据需求几个Fragment继承基类如:import android.view.View;import com.huashan.handanbank.R;import com.huashan.handanbank.baseObject.BaseFragment;/** * Created by Json on 2017/9/23. */public class LifeFragment extends BaseFragment { @Override protected void initView() { } @Override protected void initData() { } @Override protected void initListener() { } @Override public int getLayoutId() { return R.layout.activity_main; } @Override public void onClick(View view) { }}3.主界面使用FragmentTransaction显示或者隐藏Fragmentpublic class MainActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener{ @BindView(R.id.rb_header) RadioButton rbHeader; @BindView(R.id.rb_finance) RadioButton rbFinance; @BindView(R.id.rb_life) RadioButton rbLife; @BindView(R.id.rb_mine) RadioButton rbMine; @BindView(R.id.rg_footer) RadioGroup rgFooter; private FragmentTransaction transaction; private HeaderFragment headerFragment; private FinanceFragment financeFragment; private LifeFragment lifeFragment; private MineFragment mineFragment; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); initView(); initData(); } public void initData() { rgFooter.setOnCheckedChangeListener(this); rgFooter.check(R.id.rb_header); } public void initView() { //初始化底部四个RadioButton图片 initFooterButtons(); } private void initFooterButtons() { //设置图片在上部 并且使用代码实现图片的大小,在布局中设置图片大小位置不理想 //参数指的是图片在RadioButton的位置,分别为 左 上 右 下 rbHeader.setCompoundDrawables(null, getRadioButtonDrawable(R.drawable.footer_header_button_select), null, null); rbLife.setCompoundDrawables(null, getRadioButtonDrawable(R.drawable.footer_life_button_select), null, null); rbFinance.setCompoundDrawables(null, getRadioButtonDrawable(R.drawable.footer_finance_button_select), null, null); rbMine.setCompoundDrawables(null, getRadioButtonDrawable(R.drawable.footer_mine_button_select), null, null); } /** * @param drawableId * @return 为图片设置参数 左右距离,上下距离,宽,高 */ public Drawable getRadioButtonDrawable(int drawableId) { float density = getResources().getDisplayMetrics().density; int with = (int) (density * 32); Drawable img_mine = getResources().getDrawable(drawableId); img_mine.setBounds(0, 0, with, with); return img_mine; } @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { FragmentManager fragmentManager = getSupportFragmentManager(); transaction = fragmentManager.beginTransaction(); hideAllFragment(transaction); switch (i){ case R.id.rb_header: if (headerFragment==null){ headerFragment = new HeaderFragment(); transaction.add(R.id.content,headerFragment); }else { transaction.show(headerFragment); } break; case R.id.rb_finance: if (financeFragment==null){ financeFragment = new FinanceFragment(); transaction.add(R.id.content,financeFragment); }else { transaction.show(financeFragment); } break; case R.id.rb_life: if (lifeFragment==null){ lifeFragment = new LifeFragment(); transaction.add(R.id.content,lifeFragment); }else { transaction.show(lifeFragment); } break; case R.id.rb_mine: if (mineFragment==null){ mineFragment = new MineFragment(); transaction.add(R.id.content,mineFragment); }else { transaction.show(mineFragment); } break; } transaction.commit(); } private void hideAllFragment(FragmentTransaction transaction) { if (headerFragment!=null) this.transaction.hide(headerFragment); if (financeFragment!=null) this.transaction.hide(financeFragment); if (lifeFragment!=null) this.transaction.hide(lifeFragment); if (mineFragment!=null) this.transaction.hide(mineFragment); }}4.布局<?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"><FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"></FrameLayout><RadioGroup android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal" android:layout_marginBottom="5dp" android:id="@+id/rg_footer" > <RadioButton android:id="@+id/rb_header" android:text="首页" style="@style/footer_radioButton_style" /> <RadioButton android:id="@+id/rb_finance" android:text="金融" style="@style/footer_radioButton_style" /> <RadioButton android:id="@+id/rb_life" android:text="生活" style="@style/footer_radioButton_style" /> <RadioButton android:id="@+id/rb_mine" android:text="我的" style="@style/footer_radioButton_style" /></RadioGroup></LinearLayout>5.style属性<style name="footer_radioButton_style"> <item name="android:gravity">center</item> <item name="android:layout_width">0dp</item> <item name="android:layout_height">50dp</item> <item name="android:layout_weight">1</item> <item name="android:text">14sp</item> <item name="android:textColor">@drawable/footer_textcolor_select</item> <item name="android:button">@null</item></style>
阅读全文
0 0
- 常用RadioGroup+Fragment点击切换,RadioButton图标设置自己想要的位置及大小
- RadioGroup+RadioButton切换Fragment
- RadioGroup和Fragment相结合实现点击RadioButton进行Fragment的切换
- 点击RadioGroup切换Fragment
- Fragment+RadioGroup点击切换Fragment
- RadioGroup点击RadioButtion切换Fragment
- RadioGroup中点击切换RadioButton背景
- Fragment+RadioButton点击切换页面
- android中RadioGroup点击radiobutton切换radiobutton的背景和文字颜色
- 底部放5个RadioButton,点击切换不同的Fragment
- Radiogroup+radioButton+fragment
- RadioGroup与Radiobutton对fragment进行滑动、点击监听
- Radiogroup RadioButton 的drawableto 背景图片大小修改
- RadioGroup实现点击的RadioButton项变色
- Fragment+RadioButton实现点击切换页面效果
- Fragment+RadioButton实现点击切换页面效果
- RadioGroup内部radioButton切换
- android radiogroup 中 某个radiobutton设置不可更改设置 但是点击会有提示 的 方法
- Python学习笔记
- 不美翻怎么开发!Ubuntu 16.04 LTS深度美化!!!
- jQuery追加标签 append和appendTo
- 集中存储网关NFV
- 欢迎使用CSDN-markdown编辑器
- 常用RadioGroup+Fragment点击切换,RadioButton图标设置自己想要的位置及大小
- 其他题目---判断一个点是否在矩形内部
- sql find_in_set 和 like的区别
- Java使用Spring报错汇总
- 1588: [HNOI2002]营业额统计
- Logstash之sincedb问题记录
- Python初级-中级-高级资料视频文档大纲-百度云盘领取不用谢我
- 微信小程序上传图片到服务器
- Tomcat开启远程调试