Android:圆形绘图会切割边框

时间:2015-07-06 06:47:32

标签: android android-layout geometry

在项目列表视图中,我想在其中绘制一个包含特定信息的圆圈。但圆圈边界无法正确显示。

这是我布局的一部分:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:azeoo="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="@dimen/schedule_workout_item_exercice_height"
    android:gravity="center_vertical"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="@dimen/keyline_1"
        android:orientation="horizontal">

        <!-- Exercice number -->

        <RelativeLayout
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:orientation="vertical">

            <RelativeLayout
                android:id="@+id/exercice_num_container"
                android:visibility="visible"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <TextView
                    android:id="@+id/exercice_num"
                    style="@style/ItemExerciceNum"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="center_vertical|center_horizontal"
                    android:text="1" />

                THIS IS THE CIRCLE HERE:

                <View
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@drawable/circle_exercice_num" />

            </RelativeLayout>

        </RelativeLayout>

        <!-- Exercice informations -->

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingLeft="8dp">

        ...

drawable circle_exercice_num.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadius="0dp"
    android:shape="ring"
    android:thicknessRatio="1.9"
    android:useLevel="false">
    <solid android:color="@android:color/transparent"/>
    <stroke
        android:width="1dp"
        android:color="@color/item_exercice_num"/>
</shape>

结果(即使在Android Studio的设计模式下!):

enter image description here

感谢您的帮助!

更新

好的,我无法找到解决这个Android问题的任何解决方案。所以,我拿了这个库:https://github.com/pavlospt/CircleView。它现在很好用:))

1 个答案:

答案 0 :(得分:1)

//edit code layout file

<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:layout_gravity="center"
            android:gravity="center"
            tools:context=".MainActivity" >
            <View
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:background="@drawable/circleshape" />
        </RelativeLayout>


    //drawable folder xml file circleshape.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="ring"
        android:thicknessRatio="1.9"
        android:useLevel="false" >
        <solid android:color="@android:color/transparent" />
        <stroke
            android:width="2dp"
            android:color="@android:color/darker_gray" />
    </shape>