奇葩的底部导航栏

oh,NO!这是什么鬼,组长大叫一声,快看小乔,此处有坑,我快速走到老大面前,仔细看了看,说了一声fuck。让我来。。。。-_-
怎么样剧情还不错吧。。。。
大家看下效果图:
这里写图片描述

由于是公司的项目,这里不便贴出来全景图,看出效果即可,真的好蛋疼,中间那块,尼玛。。。我也是醉了。。。
不过还好,天无绝人之路,上有政策下有对策,本来底部导航栏准备用FragmentTabhost的,还是自己布局吧。。。
大家先看主布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
                tools:context=".activity.MainActivity">

    <include layout="@layout/base_title_bar"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/toobar"
        android:orientation="vertical">

        <FrameLayout
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

        <View
            android:id="@+id/line"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_above="@+id/bottom"
            android:background="#DCDBDB"/>


        <LinearLayout
            android:id="@+id/bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="#F2F2F2"
            android:orientation="horizontal"
            android:padding="5dp">

            <TextView
                android:id="@+id/agriculture"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:drawablePadding="3dp"
                android:drawableTop="@drawable/tab_item_dynamic_img_selector"
                android:gravity="center"
                android:text="农业百科"
                android:textColor="@drawable/tab_item_font_color"/>

            <TextView
                android:id="@+id/store"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:drawablePadding="3dp"
                android:drawableTop="@drawable/tab_item_main_img_selector"
                android:gravity="center"
                android:text="商城"
                android:textColor="@drawable/tab_item_font_color"/>

            <TextView
                android:id="@+id/tv_3"
                android:layout_width="0dp"
                android:layout_height="1dp"
                android:layout_weight="1"/>

            <TextView
                android:id="@+id/order"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:drawablePadding="3dp"
                android:drawableTop="@drawable/tab_item_message_img_selector"
                android:gravity="center"
                android:text="订单"
                android:textColor="@drawable/tab_item_font_color"/>

            <TextView
                android:id="@+id/mime"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:drawablePadding="3dp"
                android:drawableTop="@drawable/tab_item_person_img_selector"
                android:gravity="center"
                android:text="我的"
                android:textColor="@drawable/tab_item_font_color"/>
        </LinearLayout>


    </LinearLayout>

    <TextView
        android:id="@+id/growth"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="5dp"
        android:drawableTop="@drawable/tab_item_growth_img_selector"
        android:text="成长日志"
        android:textColor="@drawable/tab_item_font_color"/>
</RelativeLayout>

中间那个奇葩图,我是先用线性布局权重分配,中间用一个view控件占用上去,然后再用外面的相对布局搞定,哈哈,是不是很简单,不过布局的确很烂,完全是堆代码。

selector(图标自己找哈)文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/tabtn_chengzhangrizhi"  android:state_selected="false"/>
    <item android:drawable="@drawable/tabtn_chengzhangrizhi_hl" android:state_selected="true"/>
</selector>

颜色selector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item  android:state_selected="false" android:color="@color/font__normal"/>
    <item  android:state_selected="true" android:color="@color/font_select"/>

</selector>

主activity:

public class MainActivity extends BaseActivity implements View.OnClickListener {
    @Bind(R.id.agriculture)
    TextView agriculture;
    @Bind(R.id.store)
    TextView store;
    @Bind(R.id.growth)
    TextView growth;
    @Bind(R.id.order)
    TextView order;
    @Bind(R.id.mime)
    TextView mime;
    private int currentId = R.id.agriculture;//默认ID
    private AgricultureFragment baiKeFragmet;
    private StoreFragment storeFragment;
    private GrowthFragment riZiFragment;
    private OrderFragment listFragment;
    private MimeFragment mimeFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initView();
        initListener();
    }

    private void initListener() {
        agriculture.setOnClickListener(this);
        store.setOnClickListener(this);
        growth.setOnClickListener(this);
        order.setOnClickListener(this);
        mime.setOnClickListener(this);
    }

    private void initView() {
        setContentView(R.layout.activity_main);
              ButterKnife.bind(this);
        agriculture.setSelected(true);//默认选中第一个
        loadFragment(R.id.agriculture);//默认加载第一个fragmet
    }

    @Override
    public void onClick(View view) {
        if (view.getId() != currentId) {// 如果当前选中跟上次选中的一样,不需要处理
            changeSelect(view.getId());// 改变图标跟文字颜色的选中
            currentId = view.getId();// 设置选中id
        }
    }

    private void changeSelect(int id) {
        agriculture.setSelected(false);
        store.setSelected(false);
        growth.setSelected(false);
        order.setSelected(false);
        mime.setSelected(false);

        switch (id) {
            case R.id.agriculture:
                agriculture.setSelected(true);
                break;
            case R.id.store:
                store.setSelected(true);
                break;
            case R.id.growth:
                growth.setSelected(true);
                break;
            case R.id.order:
                order.setSelected(true);
                break;
            case R.id.mime:
                mime.setSelected(true);
                break;
        }
        loadFragment(id);
    }

    //加载fragment
    private void loadFragment(int id) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        hideFragment(transaction);
        switch (id) {
            case R.id.agriculture:
                if (baiKeFragmet == null) {
                    baiKeFragmet = new AgricultureFragment();
                    transaction.add(R.id.content, baiKeFragmet, "baiKeFragmet");
                } else {
                    transaction.show(baiKeFragmet);
                }
                break;
            case R.id.store:
                if (storeFragment == null) {
                    storeFragment = new StoreFragment();
                    transaction.add(R.id.content, storeFragment, "storeFragment");
                } else {
                    transaction.show(storeFragment);
                }
                break;
            case R.id.growth:
                if (riZiFragment == null) {
                    riZiFragment = new GrowthFragment();
                    transaction.add(R.id.content, riZiFragment, "riZiFragment");
                } else {
                    transaction.show(riZiFragment);
                }
                break;
            case R.id.order:
                if (listFragment == null) {
                    listFragment = new OrderFragment();
                    transaction.add(R.id.content, listFragment, "listFragment");
                } else {
                    transaction.show(listFragment);
                }
                break;
            case R.id.mime:
                if (mimeFragment == null) {
                    mimeFragment = new MimeFragment();
                    transaction.add(R.id.content, mimeFragment, "mimeFragment");
                } else {
                    transaction.show(mimeFragment);
                }
                break;
        }
        transaction.commit();
    }

    private void hideFragment(FragmentTransaction transaction) {
        if (baiKeFragmet != null) {
            transaction.hide(baiKeFragmet);

        }
        if (storeFragment != null) {
            transaction.hide(storeFragment);

        }
        if (riZiFragment != null) {
            transaction.hide(riZiFragment);

        }
        if (listFragment != null) {
            transaction.hide(listFragment);

        }
        if (mimeFragment != null) {
            transaction.hide(mimeFragment);

        }
    }
}

好了,代码很简单,逻辑很easy,希望对大家有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值