【android学习】用TextView实现的底部菜单,以及Fragment的应用
来源:互联网 发布:欧莱雅男士洗面奶知乎 编辑:程序博客网 时间:2024/05/24 02:14
【总体概述】
首先,MainActivity.java 继承FragmentActivity。
每个底部菜单按钮对应一个Fragment.
黑色的框是用来切换Fragment.橘色的框是底部菜单,有3个按钮。
这个底部菜单的布局,是外面套一个LinerLayout,里面3个TextView。通过设置权值让3个按钮宽度一样,TextView可以同时设置DrawableTop属性和Text属性。
另外,底部菜单还可以通过其他方式实现。比如用RadioButton,TabHost
common_bottom_bar.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/bottom_bar_height" android:layout_gravity="bottom" android:background="@color/dark_white" android:baselineAligned="false" android:gravity="center" > <!-- 主页 --> <TextView android:id="@+id/com_bottom_bar_tv_home" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_gravity="center" android:layout_weight="1" android:clickable="true" android:drawableTop="@drawable/icon_home" android:gravity="center" android:paddingBottom="5dip" android:paddingTop="10dip" android:text="@string/com_bottom_bar_home" android:textColor="#1B940A" android:textStyle="bold" /> <!-- 微淘 --> <TextView android:id="@+id/com_bottom_bar_tv_MicroAmoy" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:clickable="true" android:drawableTop="@drawable/icon_home" android:gravity="center" android:paddingBottom="5dip" android:paddingTop="10dip" android:text="@string/com_bottom_bar_MicroAmoy" android:textColor="#1B940A" android:textStyle="bold" /> <!-- 社区 --> <TextView android:id="@+id/com_bottom_bar_tv_community" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:clickable="true" android:drawableTop="@drawable/icon_home" android:gravity="center" android:paddingBottom="5dip" android:paddingTop="10dip" android:text="@string/com_bottom_bar_community" android:textColor="#1B940A" android:textStyle="bold" /> <!-- 购物车 --> <TextView android:id="@+id/com_bottom_bar_tv_shoppingTrolley" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:clickable="true" android:drawableTop="@drawable/icon_home" android:gravity="center" android:paddingBottom="5dip" android:paddingTop="10dip" android:text="@string/com_bottom_bar_shoppingTrolley" android:textColor="#1B940A" android:textStyle="bold" /> <!-- 我的淘宝 --> <TextView android:id="@+id/com_bottom_bar_tv_myTaobao" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:clickable="true" android:drawableTop="@drawable/icon_home" android:gravity="center" android:paddingBottom="5dip" android:paddingTop="10dip" android:text="@string/com_bottom_bar_myTaobao" android:textColor="#1B940A" android:textStyle="bold" /></LinearLayout>
activity_main.xml中,通过<include layout="@layout/common_bottom_bar" />引入底部菜单布局。
Fragment填充在act_main_ll_content这个LinearLayout中。外面套着ScrollView,为了可以让Fragment实现淘宝app首页那样上下滑动。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.luo.view.TitleBarView android:id="@+id/act_main_titleBar" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="top" /> <ScrollView android:id="@+id/act_main_scrollView" android:layout_width="fill_parent" android:gravity="center" android:layout_height="0dip" android:layout_weight="8" > <LinearLayout android:id="@+id/act_main_ll_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> </LinearLayout> </ScrollView> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="bottom" > <include layout="@layout/common_bottom_bar" /> </LinearLayout></LinearLayout>
private FragmentManager fm = getSupportFragmentManager();private Fragment_home fra_home = Fragment_home.getInstance();private Fragment_MicroAmoy fra_MicroAmoy = Fragment_MicroAmoy.getInstance();private Fragment_community fra_community = Fragment_community.getInstance();private Fragment_shoppingTrolley fra_shoppingTrolley = Fragment_shoppingTrolley.getInstance();private Fragment_myTaobao fra_myTaobao = Fragment_myTaobao.getInstance();private void gotoHome() {FragmentTransaction ft = fm.beginTransaction();ft.replace(R.id.act_main_ll_content, fra_home, MainActivity.TAG);ft.commit();setButton(tv_home);}
private void setButton(TextView v) {setDrawableTop(v, R.drawable.icon_home);setBackground(v, R.color.dark_orange);v.setEnabled(false);switch (v.getId()) {case R.id.com_bottom_bar_tv_home:setBackground(tv_MicroAmoy, R.color.dark_white);setBackground(tv_community, R.color.dark_white);setBackground(tv_shoppingTrolley, R.color.dark_white);setBackground(tv_myTaobao, R.color.dark_white);tv_MicroAmoy.setEnabled(true);tv_community.setEnabled(true);tv_shoppingTrolley.setEnabled(true);tv_myTaobao.setEnabled(true);break;case R.id.com_bottom_bar_tv_MicroAmoy:……………………}
/** * 设置textView顶部图片 * @param tv 要设置的TextView * @param id_drawable 要设置的图片 */private void setDrawableTop(TextView tv, int id_drawable){Drawable topDrawable = getResources().getDrawable(id_drawable); topDrawable.setBounds(0, 0, topDrawable.getMinimumWidth(), topDrawable.getMinimumHeight()); //void android.widget.TextView.setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) tv.setCompoundDrawables(null, topDrawable, null, null); }/** * 设置textView背景 * @param tv 要设置的TextView * @param id_color 要设置的颜色 */private void setBackground(TextView tv, int id_color){int color = getResources().getColor(id_color);tv.setBackgroundColor(color);}
Fragment_home.java:
package com.luo.fragment;import com.example.layout_demo.R;import android.content.Context;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment_home extends Fragment {private Context mContext;private View mBaseView;private static Fragment_home instance = new Fragment_home();public static Fragment_home getInstance() {return instance;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {mContext = getActivity();mBaseView = inflater.inflate(R.layout.fragment_home, container, false);findView();init();return mBaseView;}private void findView() {}private void init() {}}
源码下载:http://download.csdn.net/detail/sunshinetan/9525579
0 0
- 【android学习】用TextView实现的底部菜单,以及Fragment的应用
- 使用Fragment实现底部菜单的切换
- FragmentTabHost+Fragment实现底部菜单的切换
- android 用Fragment实现如新浪微博一样的底部菜单的切换
- Android底部菜单的实现
- Android个人学习笔记-底部导航切换Fragment的实现
- Android底部菜单,使用fragment实现
- Android-底部菜单实现(Fragment+ViewPage)
- Android 底部菜单的实现方法
- Android 底部菜单的实现(TabHost)
- 用Fragment实现如新浪微博一样的底部菜单的切换
- 用Fragment实现如新浪微博一样的底部菜单的切换
- 用Fragment实现如新浪微博一样的底部菜单的切换
- 用Fragment实现如新浪微博一样的底部菜单的切换
- Android的底部菜单
- 用FragmentTabHost加Fragment实现底部菜单
- Android底部菜单和侧滑菜单的综合应用
- Fragment实现底部菜单栏以及选项卡之间的切换
- [存储]Android使用SQLiteOpenHelper简单存储
- android调用webservice解析Gson数据
- 多线程-生产者消费者模式(2)
- C代码中自定义static assert实现机制
- WebService到底是什么?
- 【android学习】用TextView实现的底部菜单,以及Fragment的应用
- RabbitMQ(二)队列与消息的持久化
- Lucky Numbers (easy)(暴力解决)
- HashMap、HashSet和Hashtable的区别
- 计算机组成结构
- "围观"设计模式(12)--结构型之代理模式(Proxy Pattern)
- 杭电 2054(指针 strchr函数)
- Android SQLite 支持嵌套事务吗?
- 继承中构造函数与析构函数