RadioGroup与Fragment使用
2017-02-20 10:35
225 查看
RadioGroup与Fragment使用
RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮。
继承自android.view.View类:
故可以用于app底部导航栏,在主类上在套上相应的fragment,实现导航功能。看例子:
先看布局文件:底部添加了4个RadioButton。FrameLayout中切换fragment
再看住类中添加RadioGroup与Fragment的联动就行了:
在写出对应的4个fragment就行了
RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮。
RadioGroup 属性
属性 | 描述 |
---|---|
android:checkedButton | 这是子单选按钮应该在默认情况下此单选组内进行检查的ID |
属性 | 描述 |
---|---|
android:background | 可拉伸作为背景 |
android:contentDescription | 定义文本简要描述了视图内容 |
android:id | 对此视图提供一个标识符名称 |
android:onClick | 在本视图的上下文视图被点击时调用的方法的名称 |
android:visibility | 控制视图的初始可视性 |
先看布局文件:底部添加了4个RadioButton。FrameLayout中切换fragment
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <FrameLayout android:id="@+id/layFrame" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </FrameLayout> <View android:layout_width="match_parent" android:layout_height="@dimen/_0.5dp" android:background="@color/line_1"/> <RadioGroup android:id="@+id/main_tab_bar" android:layout_width="match_parent" android:layout_height="@dimen/_49dp" android:gravity="center" android:background="@color/white" android:orientation="horizont d59b al" > <RadioButton android:id="@+id/main_tab_item_jingxuan" style="@style/main_tab_item" android:checked="true" android:drawableTop="@drawable/main_tab_activity_bg" android:drawablePadding="@dimen/_3dp" android:text="@string/home" /> <RadioButton android:id="@+id/main_tab_item_zhuanti" style="@style/main_tab_item" android:drawableTop="@drawable/main_tab_account_bg" android:drawablePadding="@dimen/_3dp" android:text="@string/invest" /> <RadioButton android:id="@+id/main_tab_item_hongdong" style="@style/main_tab_item" android:drawableTop="@drawable/main_tab_home_bg" android:drawablePadding="@dimen/_3dp" android:text="@string/activity" /> <RadioButton android:id="@+id/main_tab_item_article" style="@style/main_tab_item" android:drawableTop="@drawable/main_tab_investment_bg" android:drawablePadding="@dimen/_3dp" android:text="@string/account" /> </RadioGroup> </LinearLayout>因为4个RadioButton中的大部分属性是一样的,所以抽出一个样式style="@style/main_tab_item"如下
<style name="main_tab_item"> <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:button">@color/transparent</item> <item name="android:background">@color/transparent</item> <item name="android:gravity">center</item> <item name="android:textSize">11sp</item> <item name="android:textColor">@color/main_tab_item_text_color</item> </style>
再看住类中添加RadioGroup与Fragment的联动就行了:
package com.xxxx.xxxx.ui.activity; import android.app.ProgressDialog; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.FileProvider; import android.support.v7.widget.Toolbar; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; import com.ganqianwang.ganqianwang.R; import com.ganqianwang.ganqianwang.listener.HttpProgressOnNextListener; import com.ganqianwang.ganqianwang.model.DownInfo; import com.ganqianwang.ganqianwang.model.HttpResult; import com.ganqianwang.ganqianwang.model.OpenadEntity; import com.ganqianwang.ganqianwang.network.api.HttpApi; import com.ganqianwang.ganqianwang.network.download.manager.HttpDownManager; import com.ganqianwang.ganqianwang.service.DownloadService; import com.ganqianwang.ganqianwang.subscribers.ProgressSubscriber; import com.ganqianwang.ganqianwang.subscribers.SubscriberOnNextListener; import com.ganqianwang.ganqianwang.ui.fragment.AccountFragment; import com.ganqianwang.ganqianwang.ui.fragment.ActivityFragment; import com.ganqianwang.ganqianwang.ui.fragment.HomeFragment; import com.ganqianwang.ganqianwang.ui.fragment.InvestFragment; import com.ganqianwang.ganqianwang.utils.ActivityCollector; import com.ganqianwang.ganqianwang.utils.PasswordHelp; import com.ganqianwang.ganqianwang.utils.PreferenceUtils; import com.ganqianwang.ganqianwang.utils.Utils; import com.ganqianwang.ganqianwang.widget.UpdataDialog; import com.ganqianwang.ganqianwang.widget.UpdataDialog.SettingDialogCallBack; import com.google.gson.Gson; import com.jaeger.library.StatusBarUtil; import com.umeng.analytics.MobclickAgent; import org.json.JSONException; import org.json.JSONObject; import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import butterknife.BindView; import butterknife.ButterKnife; import static com.ganqianwang.ganqianwang.ui.MyApplication.islogin; public class MainActivity extends BaseActivity implements RadioGroup.OnCheckedChangeListener,HomeFragment.OnFragmentInteractionListener{ @BindView(R.id.layFrame) FrameLayout layFrame; @BindView(R.id.main_tab_item_jingxuan) RadioButton mainTabItemJingxuan; @BindView(R.id.main_tab_item_zhuanti) RadioButton mainTabItemZhuanti; @BindView(R.id.main_tab_item_hongdong) RadioButton mainTabItemHongdong; @BindView(R.id.main_tab_item_article) RadioButton mainTabItemArticle; @BindView(R.id.main_tab_bar) RadioGroup mainTabBar; public int getTab() { return tab; } private int tab; public RadioGroup getMainTabBar() { return mainTabBar; } public int getPosition() { return position; } public void setPosition(int position) { this.position = position; } public LinearLayout getLlWindowToolbar() { return llWindowToolbar; } private void initview() { StatusBarUtil.setTransparentForImageViewInFragment(MainActivity.this, null); //设置监听 mainTabBar.setOnCheckedChangeListener(this); fragments = getFragmnets(); setDefaultFragment(); } //添加fragment的集合 private ArrayList<Fragment> getFragmnets() { ArrayList<Fragment> fragments = new ArrayList<>(); fragments.add(HomeFragment.newInstance("首页")); fragments.add(InvestFragment.newInstance("投资")); fragments.add(ActivityFragment.newInstance("活动")); fragments.add(AccountFragment.newInstance("账户")); return fragments; } /** * 设置默认的 */ private void setDefaultFragment() { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction.replace(R.id.layFrame, HomeFragment.newInstance("Home")); transaction.commit(); } //4个按钮的监听 @Override public void onCheckedChanged(RadioGroup group, int checkedId) { int childCount = group.getChildCount(); RadioButton btnButton = null; for (int i = 0; i < childCount; i++) { btnButton = (RadioButton) group.getChildAt(i); if (btnButton.isChecked()) { checkedIndex = i; break; } } FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment fragment = fragments.get(checkedIndex); if (checkedIndex==1) { fragment =new InvestFragment(); Bundle args = new Bundle(); args.putInt("position", position); fragment.setArguments(args); } ft.replace(R.id.layFrame, fragment); ft.commit(); switch (checkedIndex) { case 0: StatusBarUtil.setTransparentForImageViewInFragment(MainActivity.this, null); mTitle.setText(""); llWindowToolbar.setVisibility(View.GONE); toolbar.setVisibility(View.GONE); break; case 1: StatusBarUtil.setTransparentForImageViewInFragment(MainActivity.this, toolbar); StatusBarUtil.setColor(MainActivity.this, getResources().getColor(R.color.colorPrimary), 0); mTitle.setText("投资列表"); llWindowToolbar.setVisibility(View.GONE); toolbar.setVisibility(View.VISIBLE); break; case 2: StatusBarUtil.setTransparentForImageViewInFragment(MainActivity.this, toolbar); StatusBarUtil.setColor(MainActivity.this, getResources().getColor(R.color.colorPrimary), 0); mTitle.setText("活动中心"); llWindowToolbar.setVisibility(View.GONE); toolbar.setVisibility(View.VISIBLE); break; case 3: StatusBarUtil.setTransparentForImageViewInFragment(MainActivity.this, toolbar); StatusBarUtil.setColor(MainActivity.this, getResources().getColor(R.color.colorPrimary), 0); mTitle.setText("我的账户"); toolbar.setVisibility(View.VISIBLE); break; default: break; } } @Override public void onFragmentInteraction(int position) { HomeFragment articleFrag = (HomeFragment) getSupportFragmentManager().findFragmentById(R.id.layFrame); if (articleFrag != null) { this.position=position; mainTabItemZhuanti.setChecked(true); } } }
在写出对应的4个fragment就行了
相关文章推荐
- Android开发——使用RadioGroup及Fragment来实现底部Tab效果
- fragment、viewpager、radiogroup的配合使用
- 如何使用RadioGroup和RadioButton实现FragmentTabHost导航效果?
- 使用RadioGroup+ViewPager+Fragment实现带滑动的页卡效果TabHost时遇到的问题
- 使用ViewPager+Fragment+RadioGroup实现类似微信主界面
- Android中使用RadioGroup实现Fragment的切换
- 主界面的Fragment切换之使用RadioGroup配合切换Fragment
- Android 使用ViewPager和RadioGroup配合Fragment实现标签页,可点击按钮切换、滑动切换。
- RadioGroup+Fragment 使用Fragment的add()方法,防止使用replace每次都重新加载页面,造成资源浪费
- App首页使用多个Fragment和RadioGroup连动
- 使用RadioGroup和fragment搭建项目框架填坑
- RadioGroup结合RadioButton使用切换Fragment片段
- 使用ViewPager+RadioGroup+Fragment实现类似微信的底部导航
- 使用RadioGroup及Fragment来实现底部Tab效果 (AS版本)
- 使用Fragment和RadioGroup实现类似ios的tabbar的效果
- Fragment与Radiogroup联动,经典的主界面布局。使用show和hide的方式实现;
- RadioGroup 的使用
- RadioGroup和CheckBox使用示例
- Activity常用控件二——RadioGroup、RadioButton、CheckBox的使用
- 妙用TabHost----TabHost+RadioGroup组合使用