博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android之TabHost布局
阅读量:7162 次
发布时间:2019-06-29

本文共 3559 字,大约阅读时间需要 11 分钟。

1.概念

      盛放Tab的容器就是TabHost。TabHost的实现有两种方式:

      第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。

      第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。

 2.案例

1)继承TabActivity

res/layout/activity_main.xml

  
  
   
    
  
  
  
    
      
  
  
    
  

Main.java

public class Main extends TabActivity {   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);      //调用TabActivity的getTabHost()方法获取TabHost对象     TabHost tabHost = getTabHost();      //设置使用TabHost布局     LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(),true);     //添加第一个标签页     tabHost.addTab(tabHost.newTabSpec("tab01").setIndicator("xxx").setContent(R.id.tab01));     //添加第二个标签页,并在其标签上添加一个图片     tabHost.addTab(tabHost.newTabSpec("tab02").setIndicator("xxxx",getResources().getDrawable(R.drawable.icon)).setContent(R.id.tab02));     //添加第三个标签页     tabHost.addTab(tabHost.newTabSpec("tab03").setIndicator("xxxxxxx").setContent(R.id.tab03));   } }

  现在讲一下tab里面的参数:

    newTabSpec实例化一个分页

    setIndicator()设置标题,也就是你看到的tab显示的内容

    setContent()设置内容,可以是一个id,也可以是activity

    setContent(new Intent(this,Activity.class))

    

2)不继承TabActivity

     继承普通Activity,<TabWidget>标签id必须为tabs、<FrameLayout>标签id必须为tabcontent.这个方式在通过findViewById获得TabHost之后,必须要调用setup方法。

res/layout/activity_main.xml代码

  Main.java

public class Main extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //设置TabHost        setTabHost();    //  设置tabhost,要设置图片内容,请参考上面    protected void setTabHost() {        TabHost tabHost = (TabHost) findViewById(R.id.tabhost);        tabHost.setup();        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("xxx")                .setContent(R.id.tab01));        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("xxxx")                .setContent(R.id.tab02));        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("xxxxx")                .setContent(R.id.tab03));        tabHost.addTab(tabHost.newTabSpec("tab4").setIndicator("xxxx")                .setContent(R.id.tab04));    }}

  目前的问题及解决方法

  1、要把导航栏放下面怎么弄,比较懒,直接把一个项目里面用到了的贴上来,删除了一部分不用的

android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content"/>

  2、输入法把tab顶上去了怎么办

    在AndroidManifest.xml的activity里面加一句话

android:windowSoftInputMode="stateVisible|adjustPan"

  

 

转载于:https://www.cnblogs.com/wabi87547568/p/4943480.html

你可能感兴趣的文章