我想要没有填充的 TabLayout 选项卡。和 tabPaddingStart , tabPaddingEnd 正在工作。但是 tabPaddingBottom 和 tabPaddingTop 不起作用。我将它们的值更改为 -1 和 0,但我的项目没有变化。
我想问的另一件事是在我的标签处于糟糕状态后屏幕旋转。TextView 未完全显示。和 ImageView .....
这是我的活动
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:design="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="10">
<android.support.v4.view.ViewPager
android:id="@+id/view_pager_main_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9">
</android.support.v4.view.ViewPager>
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:visibility="visible"
android:layout_weight="1"
design:tabBackground="@drawable/tab_color_selector"
design:tabIndicatorColor="@color/colorPrimary"
design:tabMaxWidth="0dp"
design:tabPaddingStart="0dp" // working
design:tabPaddingEnd="0dp" // working
design:tabPaddingBottom="0dp"
design:tabPaddingTop="0dp"
design:tabContentStart="0dp"
design:tabGravity="fill"
design:tabMode="fixed"
>
</android.support.design.widget.TabLayout>
</LinearLayout>
//Tab Layout selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimaryTransparent"
android:state_selected="true"></item>
<item android:drawable="@color/white"
android:state_selected="false"></item>
</selector>
Run Code Online (Sandbox Code Playgroud)
“我的 tabLayout 自定义选项卡样式”
<?xml version="1.0" encoding="utf-8"?> …Run Code Online (Sandbox Code Playgroud) 不明白为什么我的 TabLayout 没有显示在我的 Fragment 下一些帮助。这是我的代码:
public class ViewPagerFragment extends Fragment {
public static final String KEY_NEW_INDEX = "key_new_index";
private ViewPager mViewPager;
private TabLayout mTabLayout;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
final SportFragment sportFragment = new SportFragment();
Bundle bundle = new Bundle();
sportFragment.setArguments(bundle);
final BuzzFragment buzzFragment = new BuzzFragment();
bundle = new Bundle();
buzzFragment.setArguments(bundle);
mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
mTabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
mViewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {
@Override
public …Run Code Online (Sandbox Code Playgroud) So my app is in RTL, and with that, the tabs are now ordered from right to left..!
..But when I swipe to slide between the tabs, it contradicts the common sense, so I want to reverse it..! see the picture to see the problem..!
What I want is..! > when I'm in Tab1 and then I swipe from left to right I want it to slide to Tab 2 and so on..!
is that possible..!?
THE CODE
My Customer …
android android-fragments swipe-gesture android-viewpager android-tablayout
更新到最新版本的支持库(27.1.1 -> 28.0.0)后,用户界面出现问题。
tab_layout_unselected_indicator.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-5dp"
android:right="-5dp"
android:top="-5dp">
<shape>
<stroke
android:width="2dp"
android:color="@color/colorGrey" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
选项卡布局:
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorBlackDark"
android:theme="@style/AppTheme.AppBarOverlay"
app:tabBackground="@drawable/tab_layout_unselected_indicator"
app:tabIndicatorColor="@color/colorOrange"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/colorOrange"
app:tabTextAppearance="@style/StrikeCustomTabText"
app:tabTextColor="@color/colorGrey" />
Run Code Online (Sandbox Code Playgroud)
看起来一个标签的背景与另一个交叉。我试图改变缩进并注意到了这一点。现在我使用的是以前版本的支持库 (27.1.1)。如何为当前版本的支持库 (28.0.0) 修复此问题?
我在 中添加了 2 个选项卡TabLayout,以下是我的代码。
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
style="@style/AppTabLayout"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center"
app:tabBackground="@drawable/tab_selector_statistics"
android:background="@drawable/tab_statistics"
app:tabContentStart="24dp"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/black"
app:layout_constraintBottom_toBottomOf="@+id/view5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view5"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true" />
Run Code Online (Sandbox Code Playgroud)
我得到以下输出。
但我希望标签占据屏幕的整个宽度,如下所示。
以下是我AppTabLayout在styles.xml文件中定义的样式。
<style name="AppTabLayout" parent="Widget.Design.TabLayout">
<item name="tabIndicatorColor">@null</item>
<item name="tabIndicatorHeight">1dp</item>
<item name="tabPaddingStart">16dp</item>
<item name="tabPaddingEnd">16dp</item>
<item name="tabSelectedTextColor">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我只是尝试使用 androidX 在 Android 上实现 tabLayout 但我无法做到。
androidX 上的 tabLayout 是否已弃用?
我正在尝试将自定义 drawable 设置为 tabIndicator,如下所示
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
app:tabIndicatorFullWidth="false"
app:layout_scrollFlags="scroll"
app:tabIndicator="@drawable/tab_layout_indicator_selected"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
drawable/tab_layout_indicator_selected
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<gradient
android:angle="180"
android:endColor="#FF00FF"
android:startColor="#00FFFF"
android:type="linear" />
<size
android:width="60dp"
android:height="4dp" />
</shape>
</item>
<item android:gravity="end">
<shape android:shape="oval">
<solid android:color="#FF00FF" />
<size
android:width="4dp"
android:height="4dp" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
这将指示器的形状显示为我的可绘制对象,但它的颜色始终保持灰色,而不是可绘制对象中给出的颜色。
我为他提供了扩展 FragmentStateAdapter 的 viewpager2 和适配器。我希望用户仅通过单击 tablayout 才能转到另一个页面。我已禁用此 viewpager2 的用户输入。但是当我点击选项卡时,页面之间有快速滑动的动画。但我只想显示新片段。与 FragmentTransaction 类似,但使用 viewpager2 和 tablayout。有谁知道怎么做?
我目前遇到一个错误,该错误继续降低我的应用程序的性能。
该错误不会导致应用程序关闭或崩溃,或者向控制台写入异常。控制台只是简单地报告这个消息:
E/iardini.error0: Invalid ID 0x00000001.
从消息中出现的唯一内容是:
如何复制错误:我在 github 上创建了一个公共存储库,因此您可以下载源代码并享用午餐!您将立即看到错误将显示在控制台内。
错误消息取决于什么?我该如何解决?
提前致谢!
android android-resources android-tablayout android-databinding android-viewpager2
我希望为Android TabLayout添加水平滚动视图。
TabLayout 中有多个选项卡并且是可滚动的。由于上面有多个选项卡,乍一看,其中一些选项卡是不可见的。用户必须滚动才能到达最右侧的选项卡(通常是隐藏的),因此这些选项卡不会引起用户的注意。
想法是有一个水平滚动指示器或一个箭头,指示右侧有更多选项卡,以便用户可以滚动以查找/使用它们。
设计思想是有一个scrollIndicator 而没有一个tabIndicator。我从谷歌找到了下面的图片,它更接近这个想法。

提前致谢,