1. 程式人生 > >TextView右上角顯示小紅點,小紅點根據TextView的長度移動,小紅點被TextView擠出去不顯示的問題;

TextView右上角顯示小紅點,小紅點根據TextView的長度移動,小紅點被TextView擠出去不顯示的問題;

大概就是圖片這個樣,這個功能很常見,本來我以為很簡單,誰知道真的很簡單;

遇到點小問題,記錄一下,哈哈;

小紅點的Drawable:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="@color/colorFF1E40" />
    <size android:height="@dimen/dimen_6dp"
        android:width="@dimen/dimen_6dp"
        />
</shape>

TextView加小紅點的佈局:

 <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="13dp"
                android:layout_marginLeft="@dimen/dimen_20dp"
                android:layout_toLeftOf="@id/tvTime"
                android:layout_alignParentLeft="true"
                android:layout_marginRight="15dp">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="流量套餐預警"
                    android:textColor="#232323"
                    android:lines="1"
                    android:textSize="@dimen/font_17sp"
                    android:id="@+id/tvTitle"
                    />
                <View
                    android:id="@+id/vRead"
                    android:visibility="visible"
                    android:layout_width="@dimen/dimen_6dp"
                    android:layout_height="@dimen/dimen_6dp"
                    android:layout_toRightOf="@id/tvTitle"
                    android:background="@drawable/message_red_read_gidn"
                />
            </RelativeLayout>

好了完成了,是很簡單吧;設定layout_toRightOf讓小紅點在TextView右邊就行了;但是:重點來了;TextView字數過長時並且只能單行顯示,這時就會把小紅點擠出去,此時小紅點不顯示,看上去就像沒有了小紅點一樣;

修改一下:

<RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="13dp"
                android:layout_marginLeft="@dimen/dimen_20dp"
                android:layout_toLeftOf="@id/tvTime"
                android:layout_alignParentLeft="true"
                android:layout_marginRight="15dp">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="流量套餐預警"
                    android:textColor="#232323"
                    android:lines="1"
                    android:paddingRight="@dimen/dimen_6dp"
                    android:textSize="@dimen/font_17sp"
                    android:id="@+id/tvTitle"
                    />
                <View
                    android:id="@+id/vRead"
                    android:visibility="visible"
                    android:layout_width="@dimen/dimen_6dp"
                    android:layout_height="@dimen/dimen_6dp"
                    android:layout_alignRight="@id/tvTitle"
                    android:background="@drawable/message_red_read_gidn"
                />
            </RelativeLayout>

layout_toRightOf會把小紅點擠出去;就不用它了,使用layout_alignRight讓小紅點和TextView右對齊就行了,如果小紅點覆蓋在TextView上面不好看的話,我們再給TextView新增一個paddingRight屬性,讓小紅點完美的露出來不壓在TextView上面;

感覺這個方法適用任何的控制元件;