TextView右上角顯示小紅點,小紅點根據TextView的長度移動,小紅點被TextView擠出去不顯示的問題;
阿新 • • 發佈:2018-11-29
大概就是圖片這個樣,這個功能很常見,本來我以為很簡單,誰知道真的很簡單;
遇到點小問題,記錄一下,哈哈;
小紅點的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上面;
感覺這個方法適用任何的控制元件;