Android在tabwidget中更改所选标签的高度

马约尔拉瓦尔

我要更改选定标签的高度,tabwidget如下图所示。

我使用的方法是:我使用了两个图像,第一个图像在顶部具有透明部分,第二个图像是完整图像,在选项卡上选择了第二个图像。但是这种方法并不适用于所有设备。我们必须创建具有相等高度的图像,并且还要将每个图像转换为九个补丁。

该图显示了我真正需要的。在此处输入图片说明

TabHost.TabSpec spec    =   mTabHost.newTabSpec(AppConstants.TAB_A);

    spec.setContent(new TabHost.TabContentFactory() {
        public View createTabContent(String tag) {
            return findViewById(R.id.realtabcontent);
        }
    });
     spec.setIndicator(createTabView(R.drawable.hometabselection));//style applied here on each tab
     mTabHost.addTab(spec);

    spec                    =   mTabHost.newTabSpec(AppConstants.TAB_B);
    spec.setContent(new TabHost.TabContentFactory() {
        public View createTabContent(String tag) {
            return findViewById(R.id.realtabcontent);
        }
    });
    spec.setIndicator(createTabView(R.drawable.realtabselection));
    mTabHost.addTab(spec);
    spec       =   mTabHost.newTabSpec(AppConstants.TAB_C);
    spec.setContent(new TabHost.TabContentFactory() {
        public View createTabContent(String tag) {
            return findViewById(R.id.realtabcontent);
        }
    });

    spec.setIndicator(createTabView(R.drawable.topnewwsselection));

    mTabHost.addTab(spec);

    spec                    =   mTabHost.newTabSpec(AppConstants.TAB_D);
    spec.setContent(new TabHost.TabContentFactory() {
        public View createTabContent(String tag) {
            return findViewById(R.id.realtabcontent);
        }
    });

    spec.setIndicator(createTabView(R.drawable.treadingselection));

    mTabHost.addTab(spec);

hometabselection.xml //在drawable中,用于所有不同的选项卡选择

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:state_selected="true"
    android:drawable="@drawable/homeselected" />//full image
<item
   android:state_selected="false"
   android:drawable="@drawable/homenormal" />//image with some portion transparent on top of that
</selector>

布局

 <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:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:orientation="vertical" >
          <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="@dimen/fr_layout_width"
            android:layout_height="@dimen/fr_layout_height"
            android:layout_weight="0" />
        <FrameLayout
            android:id="@+android:id/realtabcontent"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/fr_layout_height"
            android:layout_weight="1" />

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/hdpi_tab_layout_height"
            android:layout_weight="0"
            android:divider="@drawable/tab_bg"
            android:background="@android:color/transparent"
            android:dividerPadding="@dimen/tab_divider_padding"
            android:orientation="horizontal" />
    </LinearLayout>
</TabHost>
K

我不知道这是否行得通,但是您可以尝试保持已实现的方法onTabChangedListenerTabHost为此实现并在选择选项卡时在此处调整布局的大小。我没有尝试过,但是我的想法应该是这样的:

your_tabhost.setOnTabChangedListener(new OnTabChangeListener() {
  @Override
  public void onTabChanged(final String tabId) {
    final TabHost th = (TabHost) findViewById(android.R.id.tabhost));
    final LinearLayout lLayout = (LinearLayout) th.getTabWidget().getChildTabViewAt(th.getCurrentTab());

    ViewGroup.LayoutParams curParams = lLayout.getLayoutParams();

    lLayout.setLayoutParams(new FrameLayout.LayoutParams(curParams.width, (int) (curParams.height * 1.20)));
  }
});

但是,如果此方法有效,则会发现另一个问题:在选择此选项卡之前,您不知道选择了哪个选项卡。您需要将每个选项卡选择保存到一个类变量中,以在选择新选项卡后将其大小调整为默认高度之前知道选择了哪个选项卡。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改Android中的标签栏所选标签颜色

来自分类Dev

如何在标签小部件中增加所选标签的高度?

来自分类Dev

Android tabwidget每个标签文本

来自分类Dev

更改所选标签的图标

来自分类Dev

更改所选标签的颜色

来自分类Dev

在Android中显示所选标签的祝酒消息

来自分类Dev

在Android中更改所选列表项的布局

来自分类Dev

如何更改所选标签的颜色

来自分类Dev

在Android Studio中更改标签

来自分类Dev

在Android Studio中更改标签

来自分类Dev

在执行过程中如何更改标签的高度?

来自分类Dev

在Android中更改高度按钮Java代码

来自分类Dev

如何克服这种情况在Android中的tabwidget

来自分类Dev

如何克服这种情况在Android中的tabwidget

来自分类Dev

如何在MS Word中更改所选图像上的高度百分比?

来自分类Dev

在Android Spinner中更改所选项目的背景颜色

来自分类Dev

如何更改所选标签标题的颜色

来自分类Dev

JTabbedPanel更改所选标签的背景色

来自分类Dev

(Android)如何更改tabWidget中选项卡的大小?

来自分类Dev

在TabWidget中更改文本颜色和选择器

来自分类Dev

如何更改TabWidget颜色?

来自分类Dev

更改分页中的所选页面

来自分类Dev

更改分页中的所选页面

来自分类Dev

如何在Android中更改Switch的高度和宽度

来自分类Dev

如何在Android 4.2.2中更改操作栏的高度

来自分类Dev

根据Android中的屏幕分辨率更改视图的高度

来自分类Dev

如何在Android中以编程方式更改布局高度

来自分类Dev

如何在Android中更改progressBar的颜色和高度

来自分类Dev

在Android中更改标签页时更改菜单