奇葩的底部导航栏

来源:互联网 发布:淘宝划线价如何确定 编辑:程序博客网 时间:2024/05/01 23:41

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
原创粉丝点击