Android 在布局XML中如何使用TabItem?
给出了直接在Android 在布局XML中如何使用TabItem?,android,android-layout,android-tabs,android-tablayout,Android,Android Layout,Android Tabs,Android Tablayout,给出了直接在TabLayout中嵌套TabItem的示例,如下所示: <android.support.design.widget.TabLayout android:layout_height="wrap_content" android:layout_width="match_parent"> <android.support.design.widget.TabItem android:text="@string/tab_te
TabLayout
中嵌套TabItem
的示例,如下所示:
<android.support.design.widget.TabLayout
android:layout_height="wrap_content"
android:layout_width="match_parent">
<android.support.design.widget.TabItem
android:text="@string/tab_text"/>
<android.support.design.widget.TabItem
android:icon="@drawable/ic_android"/>
</android.support.design.widget.TabLayout>
但它没有给出如何在实践中使用的示例,TabItem的文档中说:
该视图实际上并没有添加到TabLayout中,它只是一个虚拟视图,允许设置选项卡项的文本、图标和自定义布局
那么
TabItem
的作用是什么呢?在大量的谷歌搜索之后,我找不到任何人用XML定义TabItems的例子。有没有办法在资源文件中使用TabItem设置选项卡式活动,如上图所示 这似乎是对设计库的一个相对较新的添加,显然是在23.2.0版中添加的,尽管在中没有提到。它的功能非常基本,它似乎只使用了its中给出的三个属性:文本
、图标
、布局
从测试来看,它基本上是一个XML快捷方式,用于创建新的选项卡
,并设置其文本、图标和自定义视图
,就像在代码中通常做的那样。当它说“这个视图实际上并没有添加到TabLayout”时,我相信这是在暗示它不是常规意义上的视图
,因为你不能在它上面设置任何类型的标准布局属性,比如布局宽度
或背景
。它只是使表格布局
为每个选项卡项
创建一个新的选项卡
,并相应地调用setText()
,setIcon()
,和setCustomView()
例如,要在代码中添加选项卡
,我们通常会执行以下操作:
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
// Add Tab
TabLayout.Tab tab = tabLayout.newTab();
tab.setCustomView(R.layout.tab);
tab.setText("Tab 1");
tab.setIcon(R.drawable.ic_launcher);
tabLayout.addTab(tab);
而现在我们可以通过在布局中添加TabItem
来替换上面注释之后的所有内容
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TabItem
android:layout="@layout/tab"
android:text="Tab 1"
android:icon="@drawable/ic_launcher" />
</android.support.design.widget.TabLayout>
快速添加@Mikes非常有用的答案: Android Studio现在有一个模板,介绍如何在XML布局中使用
TabLayout
和TabItem
设置。使用“新建>活动>选项卡式活动”创建所有需要的文件,然后选择“操作栏选项卡(带ViewPager)”,如屏幕截图所示:
如果要在没有自定义视图的情况下调整选项卡项的外观,请使用白色向量资源作为选项卡android:icon
,并使用选择器对其进行着色(根据android:state_selected提供不同的颜色)
当前所选选项卡下的行的颜色设置为标签TabLayout
上的app:tabIndicatorColor
我花了一段时间才开始工作,所以完整的步骤变成了一个很长的答案,我不想在这里复制它们。您可以在以下网址找到我的更详细答案和完整代码:
请参见com.google.android.material.tabs.TabItem类它接受属性中的图标文本,但似乎您需要在运行时添加标记。没错。这就是为什么TextView
和ImageView
需要具有这些特定ID的原因。这也正是它在代码中的工作原理,如果你曾经在选项卡上设置过自定义视图
s.Hmm,使用查看页面
我想你必须自己处理设置,因为我相信表格布局
在自填充选项卡时不能使用自定义视图
,并且文本会自动从PagerAdapter
中提取。也许有一些令人愉快的方法可以做到这一点,但我必须考虑一下。有没有其他方法可以替代ViewPager?TabItem有什么实际应用?我的意思是你想要什么就有什么。它基本上是一个被美化的放射组
。如果您想使用它来交换视图
s,您可以使用它来控制视图翻转器
或视图切换器
,但它们没有内置滑动功能。或者您可以使用ViewGroup#addView()
和removeView()
执行基本的View
操作。或者你可以执行你自己的FragmentTransaction
s,但是,同样,除非你实现它,否则不能刷卡。这是我能找到的唯一一篇提到TabItem
并使用android:layout
参数的帖子。在哪里可以找到布局xml文件的更大示例?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>