Tabhost标题被裁剪掉了

时间:2013-07-16 05:36:32

标签: android android-tabhost

这是我的xml文件

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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">

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:gravity="center" >
    </TabWidget>

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

</TabHost>

这是我的.class文件

    TabHost tabHost = getTabHost();

    TabSpec ta1= tabHost.newTabSpec("title");
    ta1.setIndicator("title");
    Intent ta1intent = new Intent(this, 1_webview.class);
    ta1.setContent(ta1intent);

    TabSpec ta2= tabHost.newTabSpec("title1");
    ta2.setIndicator("Title1");
    Intent ta2intent = new Intent(this, 2_webview.class);
    ta2.setContent(ta2intent);

    TabSpec ta3= tabHost.newTabSpec("two linetitle");
    ta3.setIndicator("Two line title");
    Intent ta3intent = new Intent(this, 3_webview.class);
    ta3.setContent(ta3intent);

    TabSpec ta4 = tabHost.newTabSpec("two line title");
    ta4.setIndicator("Two line //n title");  //tried using line break displays Two line \N title 
    Intent ta4intent = new Intent(this, week_webview.class);
    ta4.setContent(ta4intent);

这就是我得到的

output image

有什么方法可以让我在tab3和tab4中的标题是多线的而不是被裁掉,tab3和tab4中的实际文本是&#34;两个带衬里的文本&#34;但它只显示两行。

或者有没有办法减少字体大小以便所有单词都可见?

3 个答案:

答案 0 :(得分:3)

也许标题有足够的空间,但TabView中的填充量很大。

就我而言,标题足够短,可以放在API-8到API-14的选项卡中,但不适用于API-17。删除填充解决了我的问题。

将5个标签添加到我的tabHost后,我执行以下操作:

    for (int i=0; i<5; i++) {
        View tabView = tabHost.getTabWidget().getChildTabViewAt(i);
        tabView.setPadding(0, 0, 0, 0);
        TextView tv = (TextView)tabView.findViewById(android.R.id.title);
        tv.setSingleLine();
        tv.setTextSize(14);
    }

答案 1 :(得分:2)

我相信对于较小的屏幕尺寸,显示冗长的标签名称并不是一个好主意。因此,如果它太长,那么android的限制和截止剩余。但您可以将文本作为图像并将其放在选项卡

这样的事情:

 //CRAFTING TAB
    TabSpec craftTabSpec = tabHost.newTabSpec("Crafting");      
    craftTabSpec.setIndicator("",getResources().getDrawable(R.drawable.YOURIMAGE));
    Intent craftIntent = new Intent(this, Bifrost.class);
    craftTabSpec.setContent(craftIntent);

修改 如果你想减小字体大小,是的,你可以。定义自己的风格。

How to change the font size of tabhost in android

获取详细步骤

希望有所帮助

答案 2 :(得分:0)

        The activity must extend TabActivity implements
        OnTabChangeListener

在onCreate()...

            tabHost = getTabHost();
            tabHost.getTabWidget().setDividerDrawable(R.color.trans);
            tabHost.getTabWidget().setShowDividers(
                    TabWidget.SHOW_DIVIDER_MIDDLE);

            tabHost.setup();
            tabHost.setOnTabChangedListener(this);

            // Inbox Tab
            TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);

            // Tab Icon
            inboxSpec.setIndicator(INBOX_SPEC);
            Intent inboxIntent = new Intent(this,
                    IndividualReminderActivity.class);

            // Tab Content
            inboxSpec.setContent(inboxIntent);


            // Outbox Tab
            TabSpec outboxSpec = tabHost.newTabSpec(OUTBOX_SPEC);


            outboxSpec.setIndicator(OUTBOX_SPEC);
            Intent outboxIntent = new Intent(this,
                    CleanUpReminderActivity.class);

            outboxSpec.setContent(outboxIntent);

            // Adding all TabSpec to TabHost
            tabHost.addTab(inboxSpec); // Adding Inbox tab
            tabHost.addTab(outboxSpec); // Adding Outbox tab


            RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);
            rllp.addRule(RelativeLayout.CENTER_IN_PARENT);

            for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
                //setting background color
                tabHost.getTabWidget().getChildAt(i)
                        .setBackgroundColor(Color.parseColor("#000000"));

                //setting hieght width 
                tabHost.getTabWidget().getChildAt(i)
                        .findViewById(android.R.id.title).setLayoutParams(rllp);

                tabHost.getTabWidget().getChildAt(i).getLayoutParams().height
=100;
                tabHost.getTabWidget().getChildAt(i).getLayoutParams().width = 220;
                    }

和xml是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background_color_main"
    android:orientation="vertical" >




    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TabHost
            android:id="@android:id/tabhost"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="@color/black_color"
                android:orientation="vertical" >

                <TabWidget
                    android:id="@android:id/tabs"
                    android:layout_width="fill_parent"
                    android:layout_height="60dp"

                    android:showDividers="middle"
                    android:textSize="@dimen/text_size" />

                <FrameLayout
                    android:id="@android:id/tabcontent"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:background="#000000" />
            </LinearLayout>
        </TabHost>

        <View
            android:layout_width="fill_parent"
            android:layout_height="2dp"
            android:background="@color/ediitext_color" />
    </LinearLayout>

</LinearLayout>