防止 ActionBar 选项卡水平滚动

Prevent ActionBar tabs from horizontal scrolling

我在 actionBar 中有 4 个选项卡。我使用带有 ImageView 和 TextView 的 RelativeLayout 作为选项卡的自定义视图。

actionBar 溢出屏幕宽度,选项卡可水平滚动。

我的customView的实际宽度并不多,但是Tabs占用了额外的space(不同设备会有差异)

如何限制标签不超过屏幕宽度的 1/4。

除了使用 ActionBar,您还需要在 UI 中实现一个工具栏或类似的东西,您可以控制其中包含 Tab 的宽度...

A​​ctionBar 旨在占据屏幕的整个宽度,而您可以自己指定工具栏的宽度...

创建 tab_layout.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.v7.widget.Toolbar 
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layout_width="200dp"
      android:layout_height="wrap_content"
      app:popupTheme="@style/Theme.AppCompat.Light.NoActionBar">

    <!-- Add your Tabs here -->

  </android.support.v7.widget.Toolbar>

然后只需将此布局包含在您的 activity:

<include layout="@layout/tab_layout 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"/>

标签视图宽度基于 content/yourImage 大小,因此要使标签视图宽度更小,您必须控制 content/Image 大小。您可以通过将 ImageView 放在 FrameLayout 中来为您的 Tab 使用 CustomView

有关详细信息,请转到 post 的答案。