如何在安卓系统中创建类似于这样的圆角标签?

5
有人知道如何创建像这样的圆角标签吗?
期望的标签: enter image description here 现有的标签: enter image description here 希望你能告诉我。谢谢。

使用形状选择器 XML 并将其设置为背景。 - Vinodh
希望这可以帮到你:https://dev59.com/UF7Va4cB1Zd3GeqPK4wN - Satan Pandeya
@Vinodh 我使用了形状选择器,结果就像下面的标签图片显示的那样。但是并不是预期的结果。 - Fiend
@SatanPandeya 谢谢你的回答。但是它不能解决我的问题。 - Fiend
@Fiend:你能分享一下你代码的输出结果吗?可以截个屏吗? - Vinodh
3个回答

0
如果您想更改选项卡布局,请在drawable中制作自定义背景,并在所选选项卡和选定选项卡中提供圆角。

first tab selected

saved tab selected

在您的Activity/Fragment中,我设置了TabLayout的背景,因此您可以根据自己的需求设置背景。
为简洁起见,仅添加自定义代码。
val tabCount: Int = images_videos_tab_layout.tabCount

    for (i in 0 until tabCount) {
        val tabView: View = (images_videos_tab_layout.getChildAt(0) as ViewGroup).getChildAt(i)
        tabView.requestLayout()
        ViewCompat.setBackground(tabView,setImageButtonStateNew(requireContext()));
        ViewCompat.setPaddingRelative(tabView, tabView.paddingStart, tabView.paddingTop, tabView.paddingEnd, tabView.paddingBottom);
    }

fun setImageButtonStateNew(mContext: Context): StateListDrawable {
    val states = StateListDrawable()
    states.addState(intArrayOf(android.R.attr.state_selected), ContextCompat.getDrawable(mContext, R.drawable.tab_bg_normal_blue))
    states.addState(intArrayOf(-android.R.attr.state_selected), ContextCompat.getDrawable(mContext, R.drawable.tab_bg_normal))

    return states
}

在Drawable中

1.tab_bg_normal

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/your_unselected_tab_color" />
<corners android:radius="25dp" />
</shape>

2.tab_bg_normal_blue

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/baseThemeColor" />
<corners android:radius="25dp" />
</shape>

3.tabview_bg

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="25dp"/>
<stroke android:color="@color/baseThemeColor" android:width="1dp"/>
<solid android:color="#00000000"/>
</shape>

0

@Vinodh 我使用带有ViewPager的Tablayout。我为Tablayout设置了一个样式,并使用像这样的选择器设置了tabBackground属性:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
    <shape>
        <corners android:topLeftRadius="8dp" android:topRightRadius="8dp"/>
        <solid android:color="#fff"/>
    </shape>
</item>

<item>
    <layer-list>
        <item>
            <shape>
                <corners android:topLeftRadius="8dp" android:topRightRadius="8dp"/>
                <solid android:color="@color/white"/>
            </shape>
        </item>
        <item>
            <shape>
                <corners android:radius="8dp"/>
                <solid android:color="#000"/>
            </shape>
        </item>

    </layer-list>


</item>

并设置Tablayout的背景:

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<corners android:topLeftRadius="8dp" android:topRightRadius="8dp"/>
<solid android:color="#000"/>


0

尝试下面的形状

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="14dp"
/>
<gradient
android:angle="45"
android:centerX="35%"
android:centerColor="#000000"
android:startColor="#000000"
android:endColor="#000000"
android:type="linear"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="270dp"
android:height="60dp"
/>
<stroke
android:width="3dp"
android:color="#000000"
/>
</shape>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接