Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中创建较小的选项卡_Android_User Interface_Android Tabhost - Fatal编程技术网

在Android中创建较小的选项卡

在Android中创建较小的选项卡,android,user-interface,android-tabhost,Android,User Interface,Android Tabhost,我试图在android中创建较小的选项卡,但我似乎无法让它工作,因为当我创建较小的选项卡时,所发生的一切就是它显示较大的选项卡,但没有可绘制的 这是我现在标签的布局代码——但由于某种原因,高度没有包装——它只是与Android通常的布局高度一致 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_widt

我试图在android中创建较小的选项卡,但我似乎无法让它工作,因为当我创建较小的选项卡时,所发生的一切就是它显示较大的选项卡,但没有可绘制的

这是我现在标签的布局代码——但由于某种原因,高度没有包装——它只是与Android通常的布局高度一致

<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">
        <TabWidget android:id="@android:id/tabs"
            android:layout_width="fill_parent" android:layout_height="wrap_content" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
        </FrameLayout>
    </LinearLayout>
</TabHost>

如果有人能帮我创建类似Facebook的应用程序,那就太好了——我认为它看起来非常干净,我很想实现类似的功能:

这比我想象的要复杂得多,但是,尽管如此,这应该可以为您提供所需外观的基本实现

 TabHost             host       = getTabHost();
 TabSpec             spec       = null;
 TextView            tab1       = null,
                     tab2       = null;
 Intent              intent     = null;
 Resources           resources  = getResources();
 XmlResourceParser   parser     = null;
 ColorStateList      text       = null;
 StateListDrawable[] drawables  = new StateListDrawable[2];
 int[]               selected   = {STATE_SELECTED},
                     unselected = {STATE_UNSELECTED};
 Color               selectedColor = Color.argb(255, 255, 255, 255),
                     defaultColor  = Color.argb(255, 119, 119, 119);

 // Load the colour lists.
 parser = resources.getXml(R.color.tab_text);
 text   = ColorStateList.createFromXml(getResources(), parser);

 // Add an initial tab.
 ...Create Tab Contents Here...
 spec = host.newTabSpec("tab1");
 tab1 = new TextView(this);
 tab1.setText(R.string.all_tab_title);
 tab1.setGravity(android.view.Gravity.CENTER);
 tab1.setTextSize(18.0f);
 tab1.setTextColor(text);
 spec.setIndicator(tab1);
 spec.setContent(intent);
 host.addTab(spec);

 // Add a second tab.
 ...Create Tab Contents Here...
 spec = host.newTabSpec("tab2");
 tab2 = new TextView(this);
 tab2.setText(R.string.category_tab_title);
 tab2.setGravity(android.view.Gravity.CENTER);
 tab2.setTextSize(18.0f);
 tab2.setTextColor(text);
 spec.setIndicator(tab2);
 spec.setContent(intent);
 host.addTab(spec);

 // Set the background drawable for the tabs and select the first tab.
 drawables[0] = new StateListDrawable();
 drawables[0].addState(selected, new ColorDrawable(selectedColor));
 drawables[0].addState(unselected, new ColorDrawable(defaultColor));
 drawables[1] = new StateListDrawable();
 drawables[1].addState(selected, new ColorDrawable(selectedColor));
 drawables[1].addState(unselected, new ColorDrawable(defaultColor));
 tab1.setBackgroundDrawable(drawables[0]);
 tab2.setBackgroundDrawable(drawables[1]);
 host.setCurrentTab(0);
但这并不能解释制表符边框或元素之间的间距。在./res/color目录中还需要一个颜色状态列表定义,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_selected="true" android:color="#ff000000" />
   <item android:state_selected="false" android:color="#ffaaaaaa" />
   <item android:color="#ffffffff"/>
</selector>


希望能有所帮助。

在另一个论坛上看到了这一点,但我想我会在这里传递


TabHost th = getTabHost();
....
// Setup all the tabs -- in my case, with text only -- no icons
....
int iCnt = th.getTabWidget().getChildCount();
for(int i=0; i<iCnt; i++)
  th.getTabWidget().getChildAt(i).getLayoutParams().height /= 2;  // Or the size desired

哇,这肯定比我想要的要多得多,我想我会接受这个答案,直到有人发布一个更可靠的方式。STATE_SELECTED和STATE_UNSELECTED应该是什么的id?@pakore-抱歉忽略了这些定义。STATE_SELECTED定义为等于android.R.attr.STATE_SELECTED。“未选择的状态”等于“已选择的状态”*-1。@Jay-我似乎无法对您的答案发表评论,所以我将把我的解决方案放在这里。我所做的是使用一个三层嵌套视图。外部级别提供了选项卡之间的间距。中间层提供了边界。内部级别提供了实际的选项卡内容。所有这三个组合在一起构成整个选项卡控件的位置。再说一次,我知道有点复杂。希望这是有意义的。