本文介绍: switch (mState) {case 0:mStateButton1.setSelected(true);tag = mStateButton1.getTag();break;case 1:mStateButton2.setSelected(true);tag = mStateButton2.getTag();break;case 2:mStateButton3.setSelected(true);tag = mStateButton3.getTag();break;case

switch (mState) {

case 0:

mStateButton1.setSelected(true);

tag = mStateButton1.getTag();

break;

case 1:

mStateButton2.setSelected(true);

tag = mStateButton2.getTag();

break;

case 2:

mStateButton3.setSelected(true);

tag = mStateButton3.getTag();

break;

case 3:

mStateButton4.setSelected(true);

tag = mStateButton4.getTag();

break;

default:

break;

}

if (mOnTabChangedListener != null) {

if (tag != null && mOnTabChangedListener != null) {

mOnTabChangedListener.onTabChange(tag.toString());

} else {

mOnTabChangedListener.onTabChange(null);

}

} // else ignored

}

/* (non-Javadoc)

*/

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

case R.id.button_state1:

switchState(0);

break;

case R.id.button_state2:

switchState(1);

break;

case R.id.button_state3:

switchState(2);

break;

case R.id.button_state4:

switchState(3);

break;

default:

break;

}

}

public static interface OnTabChangeListener {

public void onTabChange(String tag);

}

}

二、对应底部Tab的XML布局文件


<FrameLayout

android:layout_width=“match_parent

android:layout_height=“match_parent”

android:layout_weight=“1.0” >

<Button

android:id=”@+id/button_state1″

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:background=”@null”

android:button=”@null”

android:drawableTop=”@drawable/ic_message_selector

android:gravity=“center”

android:singleLine=“true”

android:tag=“message”

android:text=”@string/text_tab_message”

android:textColor=”@color/text_service_color

android:textSize=“14dp” />

<FrameLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_weight=“1.0” >

<Button

android:id=”@+id/button_state2″

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:background=”@null”

android:button=”@null”

android:drawableTop=”@drawable/ic_service_selector

android:gravity=“center”

android:singleLine=“true”

android:tag=“service

android:text=”@string/text_tab_service

android:textColor=”@color/text_service_color

android:textSize=“14dp” />

<FrameLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_weight=“1.0” >

<Button

android:id=”@+id/button_state3″

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:background=”@null”

android:button=”@null”

android:drawableTop=”@drawable/ic_profile_selector

android:gravity=“center”

android:singleLine=“true”

android:tag=“personal”

android:text=”@string/text_tab_profile

android:textColor=”@color/text_service_color”

android:textSize=“14dp” />

<FrameLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_weight=“1.0” >

<Button

android:id=”@+id/button_state4″

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:background=”@null”

android:button=”@null”

android:drawableTop=”@drawable/ic_setting_selector

android:gravity=“center”

android:singleLine=“true”

android:tag=“settings

android:text=”@string/text_tab_sett
ing”

android:textColor=”@color/text_service_color”

android:textSize=“14dp” />

三、在启动的Acitvity界面使用自定义的Tab类


<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical” >

<FrameLayout

android:id=”@+id/layout_content

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_weight=“1.0” />

<app.ui.widget.TabView

android:id=”@+id/view_tab

android:layout_width=“match_parent”

android:layout_height=”@dimen/header_height”

android:background=”@color/tab_main_color” />

四、自定义处理Fragment返回重叠问题


/*******************************************************************************

******************************************************************************/

package app.util;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentTransaction;

/**

*/

public class FragmentUtils {

private FragmentUtils() {

}

public static Fragment replaceFragment(FragmentManager fragmentManager, int container,

Class<? extends Fragment> newFragment, Bundle args) {

return replaceFragment(fragmentManager, container, newFragment, args, false);

}

public static Fragment replaceFragment(FragmentManager fragmentManager, int container,

Fragment newFragment) {

return replaceFragment(fragmentManager, container, newFragment, false);

}

public static Fragment replaceFragment(FragmentManager fragmentManager, int container,

Class<? extends Fragment> newFragment, Bundle args, boolean addToBackStack) {

Fragment fragment = null;

// 构造新的Fragment

try {

fragment = newFragment.newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

if (fragment != null) {

// 设置参数

if (args != null &amp;&amp; !args.isEmpty()) {

final Bundle bundle = fragment.getArguments();

if (bundle != null) {

bundle.putAll(args);

} else {

fragment.setArguments(args);

}

}

// 替换

return replaceFragment(fragmentManager, container, fragment, addToBackStack);

} else {

return null;

}

}

public static Fragment replaceFragment(FragmentManager fragmentManager, int container,

Fragment newFragment, boolean addToBackStack) {

final FragmentTransaction transaction = fragmentManager.beginTransaction();

final String tag = newFragment.getClass().getSimpleName();

if (newFragment != null) {

transaction.replace(container, newFragment, tag);

}

if (addToBackStack) {

transaction.addToBackStack(null);

}

transaction.commitAllowingStateLoss();

return newFragment;

}

public static Fragment switchFragment(FragmentManager fragmentManager, int container,

Fragment currentFragment, Class<? extends Fragment> newFragment, Bundle args) {

return switchFragment(fragmentManager, container, currentFragment, newFragment, args, false);

}

/**

}

transaction.commitAllowingStateLoss();

return newFragment;

}

public static Fragment switchFragment(FragmentManager fragmentManager, int container,

Fragment currentFragment, Class<? extends Fragment> newFragment, Bundle args) {

return switchFragment(fragmentManager, container, currentFragment, newFragment, args, false);

}

/**

原文地址:https://blog.csdn.net/m0_66264324/article/details/122759628

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_12799.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注