替代TabActivity,底部菜单主框架搭建

本文介绍如何使用ViewPager替代已被Google废弃的TabActivity,通过封装底部菜单和ViewPager,提供一个标准的底部导航栏解决方案。作者分享了一个已封装好的自定义控件,并强调选中状态的设置技巧。此外,提供了Demo下载链接和GitHub源码,适用于快速构建符合美工设计的UI框架,且具有良好的扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看到还有些人在使用TabActvity,这个已经被Google废弃了的类,为了大家方便,写了一个能代替TabActivity的东西。说白了也就是对viewpager跟底部菜单进行了一个封装,标准的底部菜单自定义控件已经写好,如果有另外的需求扩展底部菜单控件即可(继承BindPagerAdapterView)。

先上个效果图:
这里写图片描述

使用方式见代码:

package com.example.tabtest;

import com.idroid.tab.TabFrgmAdapter;
import com.idroid.tab.TabSelectView;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
        viewPager.setAdapter(new TabFrgmAdapter(getSupportFragmentManager(), AFrgm.class, BFrgm.class, CFrgm.class));
        TabSelectView mTabsView = (TabSelectView) findViewById(R.id.tabs);

        mTabsView.setViewPager(viewPager);
        final String[] strs = new String[] { "首页", "第二页", "我" };
        final int[] images = new int[] { R.drawable.image_slt, R.drawable.image_slt, R.drawable.image_slt };

        mTabsView.setAdapter(new BaseAdapter() {

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                convertView = View.inflate(parent.getContext(), R.layout.tab_item, null);
                ImageView image = (ImageView) convertView.findViewById(R.id.item_image);
                image.setImageResource(images[position]);
                TextView textView = (TextView) convertView.findViewById(R.id.item_text);
                textView.setText(strs[position]);
                return convertView;
            }

            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return strs.length;
            }
        });

        mTabsView.setCurrentItem(0);
    }

}

其中有一个注意点,选中图片需要根据android:state_selected=”true”设置,如果用pressed,在跳转时,会丢失pressed状态,图片变成未选中的样式。
我在上线的项目中已经使用了该UI框架,使用过程中很容易满足美工的设计,推荐大家使用。而且本身它也是可扩展的,重写onlayout方法即可。

Demo下载地址
GitHub:TabView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值