android 底部tab实现,安卓开发 底部tab的实现

1.MainActivity代码:

(也就是TabsFrame)

package com.example.frametabhost;

import com.example.function.WebGo;

import com.example.licaizhuanjia.MainActivity;

import com.example.licaizhuanjia.R;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentTabHost;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.View;

import android.widget.ImageView;

import android.widget.TabHost.TabSpec;

import android.widget.TextView;

public class TabsFrame extends FragmentActivity {

private FragmentTabHost fragmentTabHost;

private String texts[] = { "开始", "好友", "群组", "更多" };

private int p_w_picpathButton[] = { R.drawable.selector1,

R.drawable.selector2,

R.drawable.selector3,

R.drawable.selector4};

private Class fragmentArray[] = {Page1.class,

Page2.class,

Page3.class,

Page4.class};

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.tabsframe);

// 实例化tabhost

fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);

fragmentTabHost.setup(this, getSupportFragmentManager(),R.id.maincontent);

for (int i = 0; i < texts.length; i++) {

TabSpec spec=fragmentTabHost.newTabSpec(texts[i]).setIndicator(getView(i));

fragmentTabHost.addTab(spec, fragmentArray[i], null);

//设置背景(必须在addTab之后,由于需要子节点(底部菜单按钮)否则会出现空指针异常)

fragmentTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.bgselector);

//背景替换

}

}

private View getView(int i) {

//取得布局实例

View view=View.inflate(TabsFrame.this, R.layout.tabcontent, null);

//取得布局对象

ImageView p_w_picpathView=(ImageView) view.findViewById(R.id.p_w_picpath);

TextView textView=(TextView) view.findViewById(R.id.text);

//设置图标

p_w_picpathView.setImageResource(p_w_picpathButton[i]);

//设置标题

textView.setText(texts[i]);

return view;

}

public boolean onKeyDown(int KeyCode,KeyEvent Event){

if(KeyCode==KeyEvent.KEYCODE_BACK){

Intent intent=new Intent(TabsFrame.this,MainActivity.class);

startActivity(intent);

finish();

}

return true;

}

}

2. 然后是4个Page,代码都一样

public class Page1 extends Fragment{

@Override

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

return inflater.inflate(R.layout.page1, null);

}

}

主要代码就是这些

然后是xml布局文件

3.在tabsframe里

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/maincontent"

android:layout_width="fill_parent"

android:layout_height="0dp"

android:layout_weight="1" >

android:id="@android:id/tabhost"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="@drawable/tab_bg" >

android:id="@android:id/tabcontent"

android:layout_width="0dp"

android:layout_height="0dp"

android:layout_weight="0" >

4.tabcontent.xml里是底部标签栏的图标

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:orientation="vertical" >

android:id="@+id/p_w_picpath"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

/>

android:id="@+id/text"

android:padding="2dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="@android:color/white"

/>

5.在selector1,2,3,4里(写在drawable文件夹里)

6.在bgselector.xml里

7.4个page的xml(4个都一样的代码)。

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/tabframe1"

>

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="22dp"

android:text="正在开发中。。。。。"

android:textSize="20dp" />

代码截图:

34f7955fc4bb5ce9586ce931fc3b3356.png

1f056fbb59901003e94a19a7660d5718.png

8b59fab5404c70bdda0d139965dafdb9.png

55e0fc2176ef33bc85df5fddc72e85e4.png

需要源码就给我留言。

实现后的界面如下:

5255eff4ce8651d28f6bc851f08878af.png

5ab0146f581b0a2b08a54c59eb49f5aa.png

a5bfba207477ceb94a803e94bbd86ee7.png

f1e914dfb9462b6c4c09e1f4308820d5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值