使用TabHost组件继承TabActivity的布局方法可以让我们在Android应用中快速实现底部切换页面的功能。下面我将详细讲解完整攻略。
准备工作
在使用TabHost组件之前,需要先引入相应的库。在build.gradle文件中添加以下依赖:
dependencies{
implementation 'com.android.support:appcompat-v7:28.0.0'
}
布局
在布局文件中添加TabHost组件,并设置子标签
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:background="#FFFFFF"
android:layout_height="0dp"
android:layout_weight="1"/>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/></LinearLayout>
</TabHost>
</RelativeLayout>
继承TabActivity
为了让TabHost组件能够正常使用,需要继承自TabActivity。在Java文件中添加以下代码:
public class MainActivity extends TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化TabHost
TabHost tabHost = getTabHost();
//创建第一个Tab并添加到TabHost中
TabHost.TabSpec tab1 = tabHost.newTabSpec("Tab1")
.setIndicator("Tab1")
.setContent(new Intent(this, TabActivity1.class));
tabHost.addTab(tab1);
//创建第二个Tab并添加到TabHost中
TabHost.TabSpec tab2 = tabHost.newTabSpec("Tab2")
.setIndicator("Tab2")
.setContent(new Intent(this, TabActivity2.class));
tabHost.addTab(tab2);
}
}
示例
以两个TabActivity为例,分别实现两个Tab标签的功能。
TabActivity1
public class TabActivity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab1);
TextView textView = findViewById(R.id.text1);
textView.setText("这是第一个Tab的内容");
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
TabActivity2
public class TabActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab2);
TextView textView = findViewById(R.id.text2);
textView.setText("这是第二个Tab的内容");
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
在TabActivity的onCreate方法中,通过TabHost.TabSpec来创建每一个Tab。其中,setIndicator中传入的字符串为Tab上显示的文本。setContent中传入的Intent则是该Tab所对应的Activity(即标签被点击后显示的内容)。每个Tab中可以放置任意布局。
完成以上步骤后,就可以成功使用TabHost组件继承TabActivity的布局方法了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android应用中使用TabHost组件继承TabActivity的布局方法 - Python技术站