gpt4 book ai didi

android - ActionBar 选项卡根据屏幕宽度设置动态宽度

转载 作者:搜寻专家 更新时间:2023-11-01 08:44:59 30 4
gpt4 key购买 nike

我总共有 5 个标签。这就是我添加它们的方式:

for (int i = 0; i < tabs.length; i++) {

if (i == 0) {
actionBar.addTab(
actionBar.newTab()
.setText(null)
.setIcon(R.drawable.activity)
.setTabListener(this));
} else if (i == 1) {
actionBar.addTab(
actionBar.newTab()
.setText(null)
.setIcon(R.drawable.group)
.setTabListener(this));
} else if (i == 2) {
actionBar.addTab(
actionBar.newTab()
.setText(null)
.setIcon(R.drawable.message)
.setTabListener(this));
} else if(i == 3){
actionBar.addTab(
actionBar.newTab()
.setText(null)
.setIcon(R.drawable.notification)
.setTabListener(this));
}
else
{
actionBar.addTab(
actionBar.newTab()
.setText(null)
.setIcon(R.drawable.hamburger)
.setTabListener(this));
}

我试过了 this解决方案,但这设置了选项卡图标的宽度,而不是选项卡本身。

以下是我应用的样式:

应用主题:

<style name="CustomActionBarTheme" parent="Theme.AppCompat.Light">
<item name="android:windowActionBarOverlay">true</item>
<item name="android:actionBarTabStyle">@style/actionBarTabBarStyle</item>
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="actionBarTabBarStyle" parent="@style/Widget.AppCompat.ActionBar.TabView">
<item name="android:paddingLeft">1dp</item>
<item name="android:paddingRight">1dp</item>
<item name="android:minWidth">10dp</item>
<item name="android:maxWidth">15dp</item>
<item name="android:showDividers">none</item>
</style>

我也尝试过为标签使用 customView 但它没有用。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabItemLayout"
android:gravity="center"
android:layout_width="wrap_content" android:layout_height="match_parent">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:id="@+id/imageViewTab" />
</LinearLayout>

选项卡太宽,tabBar 滑动。如何在没有滑动效果的情况下使选项卡根据屏幕宽度采用动态宽度。即所有选项卡都应适合屏幕宽度并且宽度应相等。

enter image description here

这里有 4 个选项卡可见。 tabBar 是可滚动的,因此第五个选项卡出现在我不想要的滚动中。

最佳答案

Tab View 宽度基于 content/yourImage 大小,因此要使 tab View 宽度更小,我们必须控制 content/Image 大小。您可以通过将 ImageView 放在 FrameLayout 中来实现,例如您的 customView 可以是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabItemLayout"
android:gravity="center"
android:layout_width="wrap_content" android:layout_height="match_parent">

<FrameLayout
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_centerInParent="true"
>

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:layout_gravity="center"
android:gravity="center"
android:id="@+id/imageViewTab" />

</FrameLayout>

</RelativeLayout>

和标签的自定义样式:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">

... ...
<item name="actionBarTabStyle">@style/ActionBarTabStyle</item>

</style>

<style name="ActionBarTabStyle" parent="@style/Widget.AppCompat.Base.ActionBar.TabView">
<item name="android:paddingLeft">0dp</item>
<item name="android:paddingRight">0dp</item>
<item name="android:paddingTop">0dp</item>
<item name="android:paddingBottom">0dp</item>
</style>


[屏幕截图]

FrameLayout 大小为 24dp: For <code>FrameLayout</code> size with <code>24dp</code>

FrameLayout 大小 40dp For <code>FrameLayout</code> size with <code>40dp</code>

关于android - ActionBar 选项卡根据屏幕宽度设置动态宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29339797/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com