您的位置:首页 > 其它

RadioGroup与Fragment使用

2017-02-20 10:35 225 查看
RadioGroup与Fragment使用

RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮。


RadioGroup 属性

属性描述
android:checkedButton这是子单选按钮应该在默认情况下此单选组内进行检查的ID
继承自android.view.View类:
属性描述
android:background可拉伸作为背景
android:contentDescription定义文本简要描述了视图内容
android:id对此视图提供一个标识符名称
android:onClick在本视图的上下文视图被点击时调用的方法的名称
android:visibility控制视图的初始可视性
故可以用于app底部导航栏,在主类上在套上相应的fragment,实现导航功能。看例子:
先看布局文件:底部添加了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就行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: