Android-android如何实现一个摆放到屏幕底部的Tabwidget
android默认实现是在屏幕顶部,如何实现成放在底部?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
android默认实现是在屏幕顶部,如何实现成放在底部?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
找到一个简洁的方法。
1。用一个垂直的LinearLayout包含Framelayout和TabWidget
2.layout的layout_height都设置wrap_content。
3. Framelayout的android:layout_weight的值设成1。
4.TabWidget的属性 android:layout_weight="0" 。
5.将TabWidget的属性android:layout_marginBottom="-4dp"(用负值来消除底边多余的分割线,看起来比较美观)
完整代码
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
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"
android:layout_marginBottom="-4dp"/>
</LinearLayout>
</TabHost>
主要原理:设置 TabWidget 控件的 android:layout_alignParentBottom="true" 实现。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost android:id="@+id/tabhost" xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" ></TabWidget>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:id="@+id/tab1"
android:layout_width="fill_parent" android:layout_height="fill_parent"
androidrientation="vertical">
<TextView android:id="@+id/view1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/textView_1" ></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/tab2"
android:layout_width="fill_parent" android:layout_height="fill_parent"
androidrientation="vertical">
<TextView android:id="@+id/view2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/textView_2" ></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/tab3"
android:layout_width="fill_parent" android:layout_height="fill_parent"
androidrientation="vertical">
<TextView android:id="@+id/view3" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/textView_3" ></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/tab4"
android:layout_width="fill_parent" android:layout_height="fill_parent"
androidrientation="vertical">
<TextView android:id="@+id/view4" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/textView_4" ></TextView>
</LinearLayout>
</FrameLayout>
</RelativeLayout>
</TabHost>
package com.focusmobi.TabDemo1;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TabHost;
public class TabDemo1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
setTitle("TabWidget Demo");
TabHost tabs = (TabHost) findViewById(R.id.tabhost);
tabs.setup();
TabHost.TabSpec spec = tabs.newTabSpec("tab1");
spec.setContent(R.id.tab1);
spec.setIndicator("主页");
tabs.addTab(spec);
spec = tabs.newTabSpec("tab2");
spec.setContent(R.id.tab2);
spec.setIndicator("经济");
tabs.addTab(spec);
spec = tabs.newTabSpec("tab3");
spec.setContent(R.id.tab3);
spec.setIndicator("汽车");
tabs.addTab(spec);
spec = tabs.newTabSpec("tab4");
spec.setContent(R.id.tab4);
spec.setIndicator("科技");
tabs.addTab(spec);
tabs.setCurrentTab(0);
}
}
TabWidget tabWidget = tabHost.getTabWidget();
LinearLayout lLayout = (LinearLayout) tabHost.getChildAt(0);
lLayout.removeViewAt(0);
lLayout.addView(tabWidget);
TabHost 默认布局,以及将TAB移到屏幕底部
我的程序中的代码 tabhost 在底部的
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:orientation="vertical"
android:background="@color/white"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- FrameLayout的id属性必须为 @android:id/tabcontent-->
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_gravity="center"
android:layout_weight="1.0"
android:layout_height="wrap_content">
</FrameLayout>
<!-- TabWidget的id属性必须为 @android:id/tabs-->
<!-- android:background="@color/navy" -->
<TabWidget
android:id="@android:id/tabs"
android:background="@drawable/bottom_bar"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.0"/>
</LinearLayout>
</TabHost>
代码中使用方法
//获取 TableHost
maitabhost = (TabHost)findViewById(R.id.tabhost);
maitabhost.setBackgroundColor(R.color.lightyellow);
// 如果没有继承TabActivity时,通过该种方法加载启动tabHost
maitabhost.setup(this.getLocalActivityManager());
//添加标签+
//maitabhost.addTab(maitabhost.newTabSpec("tabmain").setIndicator(arg0)
maitabhost.addTab(maitabhost.newTabSpec("tabmain").setIndicator("首页",
getResources().getDrawable(R.drawable.ic_home)).setContent(
new Intent(this,Activity_Tab_Main.class)));