我想在Google圈子中完全按照Google Messenger的方式显示圈子内的字母,如下所示:
我尝试使用这个可绘制文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
android:shape="oval">
<corners android:radius="10dip"/>
<stroke android:color="@color/primary_color" android:width="2dip"/>
<solid android:color="@color/primary_color"/>
作为文本视图的背景,但这是灾难性的错误。有什么想法吗?
答案 0 :(得分:8)
这就是我想出来的。
我使用了TextView
个layer-list
背景。背景符合加载视图的大小,因此为了得到一个圆圈,您可以强制TextView
具有相同的宽度和高度。
<TextView
android:id="@+id/view"
android:layout_width="65dp"
android:layout_height="65dp"
android:gravity="center"
android:textSize="40dp"
android:fontFamily="sans-serif-thin"
android:background="@drawable/background"
android:text="A"/>
我有硬编码的文本,大小,宽度和高度,但您可以在运行时管理它们。 fontFamily="sans-serif-thin"
允许您使用可能更好的瘦字体(如果可用)。图层列表:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="1dp">
<shape android:shape="oval" >
<solid android:color="#321a1a1a"/>
</shape>
</item>
<item
android:top="1dp"
android:bottom="1dp"
android:left="1dp"
android:right="1dp">
<shape android:shape="oval" >
<solid android:color="@color/red_700"/>
</shape>
</item>
</layer-list>
第一项是显示假影,但你可以摆脱它。此外,您可以删除其偏移量android:top="1dp"
。这样你将在外面有一个圆形的1dp环(现在阴影仅在底部和两侧投射)。
同样,我有硬编码的颜色,但你可以改变你想要的。
答案 1 :(得分:8)
你几乎接近回答。
在drawable文件夹下创建一个可绘制的资源文件: circular_textview.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#4286F5"/>
将此drawable设置为textView的背景。
<TextView
android:layout_width="55dp"
android:layout_height="55dp"
android:text="C"
android:fontFamily="sans-serif-thin"
android:textColor="#FFF"
android:textSize="32sp"
android:gravity="center"
android:id="@+id/textView"
android:background="@drawable/circular_textview"/>
那是
答案 2 :(得分:1)
试试这种方式。 路径res / drawable / oval.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
此代码获取您的textview并将形状应用为背景:
Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);
TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);
来自:http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
答案 3 :(得分:0)
迟到但并非最不重要。 我建议我在Amulya Khare的一个项目中使用的东西。