如何制作透明的半圆?

时间:2013-11-17 20:40:34

标签: android user-interface view drawable

我想创建这个效果.TextView用透明的半圆作为背景。 enter image description here 我尝试添加drawable作为背景。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <solid android:color="#00000000" />
</shape>

我也试过这个stackoverflow similar question,但它并不适合我。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

您无法从xml创建半圆。但是你可以用一个具有适当余量的圆圈来实现你想要的东西。填充。

创建一个固定大小的圆圈,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:useLevel="false" >
    <solid android:color="#006AC5" />
    <size
        android:height="50dp"
        android:width="50dp" />
</shape>

现在将它用作TextView的背景,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFF00">

    <ImageView
        android:contentDescription="@string/app_name"
        android:id="@+id/img"
        android:layout_width="fill_parent"
        android:layout_height="200dip"
        android:layout_alignParentTop="true"
        android:background="#006AC5" />

    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/img"
        android:layout_marginTop="-35dip"
        android:paddingTop="10dip"
        android:background="@drawable/circle"
        android:layout_centerHorizontal="true"
        android:text="@string/one"
        android:gravity="center"/>

</RelativeLayout>

现在,如果你给你的TextView提供-25dip(圆圈高度的一半)的上边距,你会在底部得到一个完美的半圆,但我只添加了另一个10dip(&amp; 10dip填充以保持文本到位)只是为了仔细查看您正在寻找的内容。

如果你想进一步想要改变顶级ImageView&amp;的背景你不希望圆圈的其余部分弄乱外观,你可以在添加TextView之后添加ImageView,这样它就会有更高的z-index,&amp;然后使用单独的TextView在Image上方显示文本。我知道这是非常讨厌的,但它应该有效:)