在Tablayout Android中隐藏选项卡

时间:2016-07-08 13:25:28

标签: android android-tablayout

不幸的是other question wasn't answered关于如何隐藏android.support.design.widget.TabLayout中的标签页。 其他问题是使用TabHost进行的,我不想更改我的代码。

我想隐藏“三个”标签。

enter image description here

片段:

viewPager = (ViewPager) rootView.findViewById(R.id.search_viewPager);
viewPager.addOnPageChangeListener(viewPagerListener);
viewPager.setAdapter(adapter);
tabLayout = (TabLayout) rootView.findViewById(R.id.search_tabs);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);

布局:

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

    <android.support.design.widget.TabLayout
    android:id="@+id/search_tabs"
    style="@style/TabLayoutStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:elevation="1dp" />

    <android.support.v4.view.ViewPager
    android:id="@+id/search_viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" />

</LinearLayout>

7 个答案:

答案 0 :(得分:4)

 //To hide the first tab 
 ((ViewGroup) tabLayout.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
 //Set the next  tab as selected tab
 TabLayout.Tab tab = tabLayout.getTabAt(1);
 tab.select(); 

答案 1 :(得分:2)

修改您传递给private void dotActionPerformed(ActionEvent evt){ String dott=display.getText(); if(dott==null) { display.setText(display.getText()+"0."); } else { display.setText(display.getText()+dot.getText()); } } 的{​​{1}}:删除第三个元素&#34;三个&#34;,以便它将消失

修改

当第三个标签出现时,只需更新adaterList即可。你可以有一些研究https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q026360_.htm

的想法

答案 2 :(得分:1)

如果要保存以前的视图(如果在选项卡项目中使用了任何自定义视图):

View view=tab_layout.getTabAt(3).getCustomView();

然后删除索引为idx(例如索引2)的标签:

tab_layout.removeTabAt(idx);

然后还原该标签,使用:

tab_layout.addTab(tab_layout.newTab().setCustomView(view));

答案 3 :(得分:0)

您可以通过tablayout.getTabAt(int index)访问TabLayout的TabView并将其转换为LinearLayout,以便可以将其可见性设置为

((LinearLayout) tabLayout.getTabAt(0).view).setVisibility(View.GONE);

答案 4 :(得分:0)

这项工作

 ((LinearLayout) Objects.requireNonNull(tabLayout.getTabAt(1)).view).setVisibility(View.INVISIBLE);

答案 5 :(得分:0)

我建议您使用下面的代码

...
"server": {
  "builder": "@angular-devkit/build-angular:server",
  "options": {
    "main": "server/index.ts",
    "outputPath": "functions/dist/apps/ditectrev-server",
    "tsConfig": "apps/ditectrev/tsconfig.server.json",
    "externalDependencies": [
      "@nestjs/microservices",
      "@nestjs/microservices/microservices-module",
      "@nestjs/websockets",
      "@nestjs/websockets/socket-module",
      "cache-manager"
    ]
  },
  ...

要使其实现,只需将虚拟选项卡插入索引0。您可以在自定义viewpager适配器中进行操作。这是代码。

var tabLayout = FindViewById<TabLayout>(YOUR_TAB_LAYOUT_ID);
tabLayout.SetupWithViewPager(YOUR_CUSTOM_VIEWPAGER);

**tabLayout.GetTabAt(0).View.Visibility = ViewStates.Gone;**

答案 6 :(得分:0)

在 Kotlin 中,您可以在如下定义 TabLayoutMediator 后隐藏 Tab

TabLayoutMediator(
        tabLayout,
        viewPager
    ) { tab, position ->
        tab.text = when (position) {
            // define tab titles
        }
    }.attach()    

((tabLayout.getTabAt(position)?.view))?.isVisible = false