按钮上的 Android 徽章

标签 android badge

这是我的xml文件代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F8F8F8">

    <RelativeLayout
        android:id="@+id/relative_buttons"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="@dimen/dp_10"
        android:layout_marginRight="@dimen/dp_10"
        android:layout_marginTop="@dimen/dp_5"
        android:gravity="center"
        android:orientation="horizontal">

        <com.hyper.barcodeapp.customClass.CustomButton
            android:id="@+id/btn_home"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/home_sel"
            android:text="@string/home"
            android:textAllCaps="false"
            android:textColor="@android:color/white"
            android:textSize="@dimen/sp_16" />


        <FrameLayout
            android:id="@+id/frame"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/btn_home"
            android:layout_weight="1">

            <com.hyper.barcodeapp.customClass.CustomButton
                android:id="@+id/btn_promotions"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:layout_weight="1"
                android:background="@drawable/promo"
                android:text="@string/promotions"
                android:textAllCaps="false"
                android:textColor="@android:color/tab_indicator_text"
                android:textSize="@dimen/sp_16" />

            <TextView
                android:id="@+id/txt_badge"
                android:layout_width="15dp"
                android:layout_height="15dp"
                android:layout_alignRight="@id/btn_promotions"
                android:layout_alignTop="@id/btn_promotions"
                android:layout_gravity="top|right"
                android:layout_marginRight="@dimen/dp_1"
                android:layout_marginTop="@dimen/dp_1"
                android:background="@drawable/badge_circle"
                android:gravity="center"
                android:padding="@dimen/dp_3"
                android:text="10"
                android:textSize="5sp" />

        </FrameLayout>


        <com.hyper.barcodeapp.customClass.CustomButton
            android:id="@+id/btn_search_code"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/frame"
            android:layout_weight="1"
            android:background="@drawable/search"
            android:text="@string/search_code"
            android:textAllCaps="false"
            android:textColor="@android:color/tab_indicator_text"
            android:textSize="@dimen/sp_16" />


    </RelativeLayout>

    <FrameLayout
        android:id="@+id/child_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/relative_buttons"
        android:layout_marginTop="@dimen/dp_5"
        android:layout_weight="8">

    </FrameLayout>
</RelativeLayout>

清楚地查看代码,如果“txt_badge”是一个按钮,我可以在“btn_promotions”上看到像图标一样的徽章,但是如果我使用 Textview 而不是按钮,布局中没有显示“txt_badge”,这可能是什么问题?

这是 badge_circle 代码

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="10dip" />
    <solid android:color="@color/tab_button_text_color_not_clicked" />
    <stroke
        android:width="1dip"
        android:color="#FFF" />
    <padding
        android:bottom="5dip"
        android:left="5dip"
        android:right="5dip"
        android:top="5dip" />
</shape>

最佳答案

将两者放在一个LinearLayout上。 Framelayout 可能只有 1 个 subview

<FrameLayout
        android:id="@+id/frame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/btn_home"
        android:layout_weight="1">

<RelativeLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">

        <com.hyper.barcodeapp.customClass.CustomButton
            android:id="@+id/btn_promotions"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_weight="1"
            android:background="@drawable/promo"
            android:text="@string/promotions"
            android:textAllCaps="false"
            android:textColor="@android:color/tab_indicator_text"
            android:textSize="@dimen/sp_16" />

        <TextView
            android:id="@+id/txt_badge"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignRight="@id/btn_promotions"
            android:layout_alignTop="@id/btn_promotions"
            android:layout_gravity="top|right"
            android:layout_marginRight="@dimen/dp_1"
            android:layout_marginTop="@dimen/dp_1"
            android:background="@drawable/badge_circle"
            android:gravity="center"
            android:padding="@dimen/dp_3"
            android:text="10"
            android:textSize="5sp" />

</RelativeLayout>

    </FrameLayout>

关于按钮上的 Android 徽章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006414/

相关文章:

java - 没有虚方法 getTable()Lio/realm/internal/TableOrView

java - robolectric 单元测试 android Timer

x 时间后 Android 小部件更新

ios - 如何在 iOS 推送通知上做角标(Badge)增量

android - 同时选择 ImageButton 和 TextView

android - Kotlin中如何使用OKHTTP发送post请求?

ios - 将推送通知角标(Badge)添加到 UIButton

ios - 将角标(Badge)图标添加到圆形矩形按钮?

ios - 获取标签栏的当前角标(Badge)编号

html - 为什么 bootstrap 徽章总是默认颜色?