奇葩的底部导航栏
来源:互联网 发布:淘宝划线价如何确定 编辑:程序博客网 时间: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
- 奇葩的底部导航栏
- 隐藏导航栏底部横线 隐藏navigationBar底部的线
- 仿微信可滑动的底部导航栏
- 安卓微信底部导航栏的实现
- Fragment之底部导航栏的实现
- 底部导航栏的实现方式
- Android 底部导航栏的使用 fragment
- Fragment底部导航栏的实现
- iOS去掉导航栏底部的线
- android底部导航栏的程序代码
- android底部导航栏的优化
- RadioGroup+ViewPager制作的底部导航栏
- iOS去掉导航栏底部的线
- 炫酷的底部导航栏
- 导航栏 底部的线显示
- 底部导航栏 BottomNavigationBar的使用
- 封装通用的底部导航栏
- 非常好用的底部导航栏
- (4.3.2.9)Android HandlerThread 的使用及其Demo
- C++11系列-什么是C++11
- js基于原型的面向对象
- Eclipse 成长记
- Gcd[bzoj2018]
- 奇葩的底部导航栏
- c++第7次实验
- zoom
- RAW RGB, Bayer RGB与RGB
- iOS 多线程 GCD
- Binary Tree Right Side View
- OtoStudio学习笔记2(基础编程&矩形控制例子&曲线图绘制)
- 实例069-判断文件类型
- myeclipse部署时An internal error occurred 错误的几种情况