編輯:Android開發實例
Android的TabHost是一個很好的分頁的控件
能夠把自己的程序的多個activity組織起來
這裡面聯系到的概念有ActivityGroup
TabActivity
使用TabHost構建程序有兩種方法
一種是在java代碼裡,一種是在xml代碼裡
一種方法是在java裡直接寫
- private TabHost mtabHost;
- mtabHost = getTabHost();
- mtabHost.addTab(mtabHost.newTabSpec("tab1")
- .setIndicator(getString(R.string.tabs_1_tab_1), getResources().getDrawable(R.drawable.undo))
- .setContent(this));
- mtabHost.addTab(mtabHost.newTabSpec("tab2")
- .setIndicator(getString(R.string.tabs_1_tab_2),getResources().getDrawable(R.drawable.undo))
- .setContent(this));
- mtabHost.addTab(mtabHost.newTabSpec("tab3")
- .setIndicator(getString(R.string.tabs_1_tab_3),getResources().getDrawable(R.drawable.undo))
- .setContent(this));
- mtabHost.addTab(mtabHost.newTabSpec("tab4")
- .setIndicator(getString(R.string.tabs_1_tab_4),getResources().getDrawable(R.drawable.undo))
- .setContent(new Intent(this, inviteTab.class)));
- mtabHost.addTab(mtabHost.newTabSpec("tab5")
- .setIndicator(getString(R.string.tabs_1_tab_5),getResources().getDrawable(R.drawable.tab_set))
- .setContent(this));
- mtabHost.addTab(mtabHost.newTabSpec("tab6")
- .setIndicator(getString(R.string.tabs_1_tab_6),getResources().getDrawable(R.drawable.undo))
- .setContent(this));
- mtabHost.addTab(mtabHost.newTabSpec("tab7")
- .setIndicator(getString(R.string.tabs_1_tab_7),getResources().getDrawable(R.drawable.tab_help))
- .setContent(this));
- mtabHost.addTab(mtabHost.newTabSpec("tab8")
- .setIndicator(getString(R.string.tabs_1_tab_8),getResources().getDrawable(R.drawable.tab_help))
- .setContent(this));
- mtabHost.setOnTabChangedListener( this);
然後需要重載兩個函數
- public void onTabChanged(String tagString) {
- // TODO Auto-generated method stub
- }
- @Override
- public View createTabContent(String arg0) {
- final TextView tv = new TextView(this);
- tv.setText("Content for tab with tag " + arg0);
- return tv;
- }
這樣就可以實現一個初步的TabHost
另外一種方法
還可以在xml文件裡畫TabHost界面
比如最近我做一個項目,就遇到需要把TabHost放在屏幕下方
代碼如下
這是main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TabHost android:id="@+id/edit_item_tab_host"
- android:layout_width="fill_parent" android:layout_height="fill_parent">
- <LinearLayout android:orientation="vertical"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:padding="5dp">
- <FrameLayout android:id="@android:id/tabcontent"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:padding="5dp" android:layout_weight="1" />
- <TabWidget android:id="@android:id/tabs"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:layout_weight="0" />
- </LinearLayout>
- </TabHost>
- </LinearLayout>
主文件裡
- public static TabHost tab_host;
- setContentView(R.layout.main);
- tab_host = (TabHost) findViewById(R.id.edit_item_tab_host);
- tab_host.setup(this.getLocalActivityManager());
- TabSpec ts1 = tab_host.newTabSpec("TAB_1");
- ts1.setIndicator(getString(R.string.a),getResources().getDrawable(R.drawable.a));
- ts1.setContent(new Intent(this, a.class));
- tab_host.addTab(ts1);
- TabSpec ts2 = tab_host.newTabSpec("TAB_2");
- ts2.setIndicator(getString(R.string.b),getResources().getDrawable(R.drawable.b));
- ts2.setContent(new Intent(this, b.class));
- tab_host.addTab(ts2);
- TabSpec ts3 = tab_host.newTabSpec("TAB_3");
- ts3.setIndicator(getString(R.string.c),getResources().getDrawable(R.drawable.c));
- ts3.setContent(new Intent(this, c.class));
- tab_host.addTab(ts3);
- TabSpec ts4 = tab_host.newTabSpec("TAB_4");
- ts4.setIndicator(getString(R.string.d),getResources().getDrawable(R.drawable.d));
- ts4.setContent(new Intent(this, d.class));
- tab_host.addTab(ts4);
- tab_host.setCurrentTab(0);
- tab_host.setOnTabChangedListener(new OnTabChangeListener(){
- @Override
- public void onTabChanged(String tabId) {
- // TODO Auto-generated method stub
- });
這樣就可以構建出一個很好的TabHost的界面
繪制圓環其實很簡單,有大概以下三種思路. 這裡先說網上提到的一種方法。思路是先繪制內圓,然後繪制圓環(圓環的寬度就是paint設置的paint.setStroke
1. UiObejct.getFromParent()的用法:從這個名字就知道,就是從當前對象的父對象中查找想要的子對象,該子對象和當前對象應該是同一層級。 如
本文實例講述了Android自定義ActionBar的實現方法。分享給大家供大家參考。具體實現方法如下: Android 3.0及以上已經有了ActionBar的
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放