Android 分页控件制成底部菜单.

fmms 13年前
     <p>其实Android 中的底部菜单, 可以用分页控件很好的实现。   我们先将自定义分页控件做好, 就可以做到顶底两个位置的菜单了。</p>    <p>TabHost只是作为一个容器来存放一些Activity, 所以需要自己另外创建几个新的Activity, 然后由主TabHost加载。</p>    <p><a href="https://simg.open-open.com/show/13f02689fa90c251c8b33d9ad9991649.jpg" target="_blank"><img style="cursor:pointer;" alt="Android 分页控件制成底部菜单." src="https://simg.open-open.com/show/13f02689fa90c251c8b33d9ad9991649.jpg" width="326" height="489" /></a></p>    <p>tab_style.xml   </p>    <p>是每个Tab的自定义样式</p>    <pre class="brush:xml; toolbar: true; auto-links: false;">//分页控件样式 <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:paddingLeft="5dip"  android:paddingRight="5dip"  android:paddingTop="5dip"  android:background="@drawable/tab_bg" ; >    <FrameLayout    android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:layout_weight="0.6"   >   <TextView     android:id="@+id/tab_label" ;   android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center"    android:background="@drawable/tab_title_selector" ;   android:textColor="#FFFFFF"    android:textStyle="bold"   />  </FrameLayout>  </LinearLayout></pre>main_tab.xml   是主TabHost布局文件    <pre class="brush:xml; toolbar: true; auto-links: false;">//TabHost布局 <?xml version="1.0" encoding="UTF-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android"  android:id="<a href="http://my.oschina.net/asia" class="referer" target="_blank">@android</a> :id/tabhost"   android:layout_width="fill_parent"  android:layout_height="fill_parent"  >     //必须包含下列三个View  <LinearLayout   android:orientation="vertical"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   >  <FrameLayout     android:gravity="center"     android:id="<a href="http://my.oschina.net/asia" class="referer" target="_blank">@android</a> :id/tabcontent"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_weight="1.0"   />      //TabWidget位置在FrameLayout之下则显示在低部, 在之上则显示在顶部   <TabWidget     android:id="<a href="http://my.oschina.net/asia" class="referer" target="_blank">@android</a> :id/tabs"    android:layout_height="wrap_content"    android:layout_width="fill_parent"    android:layout_weight="0.0"    />     </LinearLayout>    </TabHost></pre>    <p></p>    <p>tab_title_selector.xml</p>    <p>是Tab中TextView的按下背景</p>    <pre class="brush:xml; toolbar: true; auto-links: false;">//选择器,指示Text按下后的背景 <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">  <item   android:state_focused="true"   android:drawable="@drawable/tab_btn_bg_d" ;  />  <item   android:state_selected="true"   android:drawable="@drawable/tab_btn_bg_d" ;  />  <item   android:state_pressed="true"   android:drawable="@drawable/tab_btn_bg_d" ;  /> </selector></pre>    <p></p>    <p>Activity类</p>    <p>另外还需要几个Activity类, 普通的Activity类即可, 在此不显示。</p>    <pre class="brush:xml; toolbar: true; auto-links: false;">public class TabTest extends TabActivity {  private TabWidget mTabWidget;  private TabHost mTabHost;  /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState)  {   super.onCreate(savedInstanceState);   setContentView(R.layout.main_tabs);      mTabHost = getTabHost();      //将要显示的Activity载入TabHost控件   //要显示的Activity由自己自由创建   setTabIndicator("one", 1, new Intent(this, OneActivity.class));   setTabIndicator("Two", 2, new Intent(this, TwoActivity.class));   setTabIndicator("Three", 3, new Intent(this, OneActivity.class));   setTabIndicator("Four", 4, new Intent(this, TwoActivity.class));  }    private void setTabIndicator(String title, int nId, Intent intent)  {   //使用指定Tab样式   View view = LayoutInflater.from(this.mTabHost.getContext())      .inflate(R.layout.tab_style, null);      TextView text  = (TextView)view.findViewById(R.id.tab_label);   String strId  = String.valueOf(nId);      text.setText(title);      //创建一个新Tab   TabHost.TabSpec localTabSpec = mTabHost.newTabSpec(strId)       .setIndicator(view).setContent(intent);   //加载新Tab   mTabHost.addTab(localTabSpec);  } }</pre>文章出处:    <a href="/misc/goto?guid=4959499234813838935" rel="nofollow">http://blog.csdn.net/knowheart/article/details/7049596</a>    <p></p>    <p></p>    <p></p>