gpt4 book ai didi

Android - 具有 CHIPS 风格的自定义选项卡布局?

转载 作者:行者123 更新时间:2023-12-04 14:41:19 27 4
gpt4 key购买 nike

如何在我的标签中实现这种外观?
Image describing the style I need

我希望它:

• 根据查看的页面更改文本的颜色(我已经通过默认的 supportLibrary 的 Widget TabLayout 实现了)
• 改变背景描边的颜色
• 每个选项卡元素之间有间距(无法通过填充选项实现)

有没有图书馆可以帮助我,我搜索了但没有找到任何有用的细节,实际上我不知道在搜索栏中输入什么。
这种风格叫什么名字?

提前致谢。

最佳答案

输出:

enter image description here

大部分是xml自定义。

style.xml

<style name="ChipTabLayout" parent="Widget.Design.TabLayout">
<item name="tabIndicatorColor">@android:color/transparent</item>
<item name="tabBackground">@drawable/selector_tab</item>
<item name="tabSelectedTextColor">?android:textColorPrimary</item>
</style>

创建以下drawables:

  1. chip_outline.xml
  2. chip_outline_selected.xml
  3. selector_tab.xml

chip_outline.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke
android:width="2dp"
android:color="#B1BCBE"/>
<corners android:radius="20dp"/>
<padding
android:left="16dp"
android:top="8dp"
android:right="8dp"
android:bottom="8dp"/>
</shape>

chip_outline_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#B1BCBE"/>
<stroke
android:width="2dp"
android:color="#B1BCBE"/>
<corners android:radius="20dp"/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"/>
</shape>

selector_tab.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/chip_outline_selected" android:state_pressed="true"/>
<item android:drawable="@drawable/chip_outline_selected" android:state_selected="true"/>
<item android:drawable="@drawable/chip_outline_selected" android:state_activated="true"/>
<item android:drawable="@drawable/chip_outline" android:state_pressed="false"/>
<item android:drawable="@drawable/chip_outline" android:state_selected="false"/>
<item android:drawable="@drawable/chip_outline" android:state_activated="false"/>
</selector>

工具栏 xml 代码

<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:layout_marginBottom="4dp"
android:background="@android:color/white"
android:elevation="4dp">

<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
style="@style/ChipTabLayout"
android:layout_width="match_parent"
android:layout_height="30dp"
app:tabIndicatorHeight="30dp"
app:tabMode="scrollable"
android:minWidth="80dp"
app:tabGravity="fill"
android:layout_gravity="center"
app:tabIndicatorGravity="center"
android:background="@android:color/white"
android:minHeight="?attr/actionBarSize"/>
</androidx.appcompat.widget.Toolbar>

</com.google.android.material.appbar.AppBarLayout>

Utils.kt

class Utils {
companion object {
fun dpToPx(dp: Int): Int {
return ((dp * Resources.getSystem().displayMetrics.density).toInt());
}

fun pxToDp(px: Int, context: Context): Int {
return ((px / Resources.getSystem().displayMetrics.density).toInt());
}
}
}

Java alternative

在您的 Activity/fragment 中添加以下代码 tabLayout.setupWithViewPager():

for (i in 0 until binding.toolbarHolder.tabLayout.getTabCount()) {
val tab = (binding.toolbarHolder.tabLayout.getChildAt(0) as ViewGroup).getChildAt(i)
val p = tab.layoutParams as ViewGroup.MarginLayoutParams
p.setMargins(Utils.dpToPx(8), 0, Utils.dpToPx(8), 0)
tab.requestLayout()
}

Java alternative

根据您的要求更改颜色。编码愉快!

关于Android - 具有 CHIPS 风格的自定义选项卡布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52421069/

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