python的网站开发源码,群晖 nas做网站 推荐,公司运营是做什么的,想自己做网站该学些什么本文实例为大家分享了Android实现底部切换标签的具体代码#xff0c;供大家参考#xff0c;具体内容如下实现底部通用切换标签 #xff0c;嵌套Fragment#xff0c;方便自定义布局自定义控件#xff1a;widget_tab_view.xmlandroid:layout_widthmatch_parenta…本文实例为大家分享了Android实现底部切换标签的具体代码供大家参考具体内容如下实现底部通用切换标签 嵌套Fragment方便自定义布局自定义控件widget_tab_view.xmlandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:idid/tab_imageandroid:layout_width20dpandroid:layout_height20dp /android:idid/tab_labelandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textColor#666666android:textSize12sp /定义单个标签public class TabView extends LinearLayout {private ImageView mTabImage;private TextView mTabLable;public TabView(Context context) {super(context);initView(context);}public TabView(Context context, Nullable AttributeSet attrs) {super(context, attrs);initView(context);}public TabView(Context context, Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView(context);}private void initView(Context context) {setOrientation(VERTICAL);setGravity(Gravity.CENTER);LayoutInflater.from(context).inflate(R.layout.widget_tab_view, this, true);mTabImage (ImageView) findViewById(R.id.tab_image);mTabLable (TextView) findViewById(R.id.tab_label);}public void initData(TabItem tabItem) {mTabImage.setImageResource(tabItem.imageResId);mTabLable.setText(tabItem.lableResId);}}定义单个标签的entitypublic class TabItem {public int imageResId;public int lableResId;public Class extends Fragment tagFragmentClz;public TabItem(int imageResId, int lableResId) {this.imageResId imageResId;this.lableResId lableResId;}public TabItem(int imageResId, int lableResId, Class extends Fragment tagFragmentClz) {this.imageResId imageResId;this.lableResId lableResId;this.tagFragmentClz tagFragmentClz;}}定义底部切换标签控件public class BottomTabLayout extends LinearLayout implements View.OnClickListener {private ArrayList tabs;private OnTabClickListener listener;private int tabCount;private View selectedView;public BottomTabLayout(Context context) {super(context);initView();}public BottomTabLayout(Context context, Nullable AttributeSet attrs) {super(context, attrs);initView();}public BottomTabLayout(Context context, Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView();}private void initView() {setOrientation(HORIZONTAL);}public void setCurrentTab(int i) {if (i tabCount i 0) {View view getChildAt(i);onClick(view);}}public void initData(ArrayList tabs, OnTabClickListener listener) {this.tabs tabs;this.listener listener;LayoutParams params new LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT);params.weight 1;params.gravity Gravity.CENTER;if (tabs ! null tabs.size() 0) {tabCount tabs.size();TabView mTabView null;for (int i 0, len tabs.size(); i len; i) {mTabView new TabView(getContext());mTabView.setTag(tabs.get(i));mTabView.initData(tabs.get(i));mTabView.setOnClickListener(this);addView(mTabView, params);}} else {throw new IllegalArgumentException(tabs can not be empty);}}Overridepublic void onClick(View view) {if (selectedView ! view) {listener.onTabClick((TabItem) view.getTag());view.setSelected(true);if (selectedView ! null) {selectedView.setSelected(false);}selectedView view;}}public interface OnTabClickListener {void onTabClick(TabItem tabItem);}}Activitypublic class MainActivity extends AppCompatActivity implements BottomTabLayout.OnTabClickListener {private BottomTabLayout tab_layout;private ArrayList tabs;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setTitle(底部切换标签);tab_layout (BottomTabLayout) findViewById(R.id.tab_layout);initBottomTab();tab_layout.setCurrentTab(0);}private void initBottomTab() {tabs new ArrayList();tabs.add(new TabItem(R.drawable.selector_tab_msg, R.string.wechat, OneFragment.class));tabs.add(new TabItem(R.drawable.selector_tab_contact, R.string.contacts, TwoFragment.class));tabs.add(new TabItem(R.drawable.selector_tab_moments, R.string.discover, ThreeFragment.class));tabs.add(new TabItem(R.drawable.selector_tab_profile, R.string.me, FourFragment.class));tab_layout.initData(tabs, this);}private Fragment lastFragment;Overridepublic void onTabClick(TabItem tabItem) {try {Fragment tmpFragment getSupportFragmentManager().findFragmentByTag(tabItem.tagFragmentClz.getSimpleName());FragmentTransaction transaction getSupportFragmentManager().beginTransaction();if (tmpFragment null) {tmpFragment tabItem.tagFragmentClz.newInstance();transaction.add(R.id.fl_container, tmpFragment, tabItem.tagFragmentClz.getSimpleName());if (lastFragment ! null) {transaction.hide(lastFragment);}transaction.commitAllowingStateLoss();} else {transaction.show(tmpFragment);if (lastFragment ! null) {transaction.hide(lastFragment);}transaction.commitAllowingStateLoss();}lastFragment tmpFragment;} catch (Exception e) {e.printStackTrace();}}}布局文件xmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:contextcom.sample.bottomtab.MainActivityandroid:idid/fl_containerandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:background#ffffff /android:layout_widthmatch_parentandroid:layout_height1dpandroid:background#dcdcdc /android:idid/tab_layoutandroid:layout_widthmatch_parentandroid:layout_height48dpandroid:background#ffffff /以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。