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,希望对大家有用。