0

我是 android 开发的菜鸟,我正在尝试制作自定义标签。但是,当我运行我的应用程序时,选项卡会填满屏幕的整个高度,并且由于某种原因,在 OnCreate 期间会出现软键盘。我无法确定这是否是因为 tabhost 未能设置内容、布局充气器的参数错误,或者是我缺少的其他东西。我使用教程作为我的指南,所以我不明白我为什么会遇到这个问题。任何帮助是极大的赞赏。

我的代码;

inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);        
    th = (TabHost)findViewById(R.id.tabhost);

    calTab = inflater.inflate(R.layout.tab, th.getTabWidget(), false);
    calTab.setLayoutParams(params);
    label = (TextView) calTab.findViewById(R.id.tabLabel);
    label.setText("CALC");
    divider = (TextView) calTab.findViewById(R.id.tabSelectedDivider);
    divider.setVisibility(View.VISIBLE);        

    newsTab = inflater.inflate(R.layout.tab, th.getTabWidget(), false);
    newsTab.setLayoutParams(params);
    label = (TextView) newsTab.findViewById(R.id.tabLabel);
    label.setText("NEWS");

    fdTab = inflater.inflate(R.layout.tab, th.getTabWidget(), false);
    fdTab.setLayoutParams(params);
    label = (TextView) fdTab.findViewById(R.id.tabLabel);
    label.setText("FIND");

    pTab = inflater.inflate(R.layout.tab, th.getTabWidget(), false);
    pTab.setLayoutParams(params);
    label = (TextView) pTab.findViewById(R.id.tabLabel);
    label.setText("PORT");


    th.setup();

    specs1 = th.newTabSpec("tag1");
    specs1.setContent(R.id.tab1);
    specs2 = th.newTabSpec("tag2");
    specs2.setContent(R.id.tab2);
    specs3 = th.newTabSpec("tag3");     
    specs3.setContent(R.id.tab3);
    specs4 = th.newTabSpec("tag4");     
    specs4.setContent(R.id.tab4);
    if(android.os.Build.VERSION.SDK_INT>10){ 
        specs1.setIndicator(calTab);
        specs2.setIndicator(newsTab);
        specs3.setIndicator(fdTab);
        specs4.setIndicator(pTab);
    }else{
        specs1.setIndicator("CAL",getResources().getDrawable(R.drawable.calculatortab));
        specs2.setIndicator("NEWS",getResources().getDrawable(R.drawable.news));
        specs3.setIndicator("FIND ", getResources().getDrawable(R.drawable.maptab));
        specs4.setIndicator("PORT", getResources().getDrawable(R.drawable.portfoliotab));
    }
    th.addTab(specs1);
    th.addTab(specs2);
    th.addTab(specs3);
    th.addTab(specs4); 
    th.setOnTabChangedListener(Activity.this);

制表符 XML

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/tabLabel"
    android:layout_width="fill_parent"
    android:layout_height="43dp"
    android:gravity="center_vertical|center_horizontal"
    android:textColor="#FFF"
    android:textSize="12dp"/>

<TextView
    android:id="@+id/tabSelectedDivider"
    android:layout_width="fill_parent"
    android:layout_height="5dp"
    android:layout_alignParentBottom="true"
    android:background="#3366CC"
    android:visibility="gone" />

<TextView
    android:id="@+id/tabDivider"
    android:layout_width="fill_parent"
    android:layout_height="2dp"
    android:layout_alignParentBottom="true"
    android:background="#3366CC" />

<TextView
    android:id="@+id/tabSplitter"
    android:layout_width="1px"
    android:layout_height="23dp"
    android:layout_alignParentRight="true"
    android:layout_marginTop="10dp"
    android:background="#333" />

带有 TABHOST 的主要 XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TabHost
    android:id="@+id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent" > <!-- changed from match parent -->

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sat="http://schemas.android.com/apk/res/com.bryanjrichardson.GSCC"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >



            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

...and so forth
4

1 回答 1

1

你需要给你的tabwidget一个明确的高度。因此,您应该输入一个值,例如 60dp 或任何美观的值,而不是为小部件高度包装内容。

于 2013-02-09T03:30:19.333 回答