我正在寻找一种方法,可以根据Google最新的Material Design将圆角药丸/圆角选定的标签设为指标。我已经制作了一个具有所需结果的drawable并将其实现为“ app:tabIndicator”,但是它无法正常工作。
This is what I want to achieve
rounded_tab_indicator.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:bottom="5dp"
android:end="5dp"
android:start="5dp">
<shape
android:shape="rectangle"
app:tabIndicatorFullWidth="false"
app:tabIndicatorHeight="5dp">
<corners android:radius="8dp" />
<solid android:color="@color/colorPrimary" />
</shape>
</item>
</layer-list>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.android.tourguideapp.MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/htab_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/htab_collapse_toolbar"
android:layout_width="match_parent"
android:layout_height="256dp"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:titleEnabled="false">
<ImageView
android:id="@+id/tour_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/dscn0585"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.80" />
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3"
android:background="@android:color/black"
android:fitsSystemWindows="true" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/htab_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="top"
android:layout_marginBottom="40dp"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
style="@style/CategoryTab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:tabIndicatorHeight="5dp"
app:tabIndicator="@drawable/rounded_tab_indicator"
app:layout_collapseMode="pin"
app:tabMode="scrollable" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
答案 0 :(得分:1)
可绘制的标签指示符:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="100dp"
android:height="2dp" />
<corners
android:topLeftRadius="8dp"
android:topRightRadius="8dp">
</corners>
<solid
android:color="#1475e7">
</solid>
</shape>
标签布局:
<com.google.android.material.tabs.TabLayout
...
app:tabIndicatorFullWidth="false"
app:tabIndicator="@drawable/tab_indicator"
... />
答案 1 :(得分:0)
当您检查TabLayout的源代码时,您会看到它绘制了您提供的可绘制的指示器,其边界是根据选项卡的大小计算得出的。为了获得共享的选项卡布局,应为可绘制对象添加填充。但是,选项卡的大小各不相同,因此您必须以百分比样式提供填充。我不知道您是否可以在xml文件中进行这种填充操作,但是可以在扩展Drawable的自定义drawable类中进行此操作。