在xml文件中创建圆实际上不是圆

时间:2019-07-09 12:30:49

标签: android

我有一个从左到右动画的渐变视图。我有一个描述内部圆的XML,但是正如您所看到的,XML的边界实际上是矩形的,如何使溢出隐藏在XML的外部。 看起来只有背景是一个圆形,而不是形状本身,我认为解决方法是使用PorterDuff.Mode,但无济于事。

这是我的circle.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke
        android:width="2dp"
        android:color="@android:color/white" />

    <corners android:radius="7.5dp" />
    <size android:width="327dp" android:height="211.5dp" />

</shape> 

在我的布局中,我像这样使用它:

  <RelativeLayout
        android:id="@+id/white_rectangle"
        android:layout_width="327dp"
        android:layout_height="211.5dp"
        android:layout_gravity="center"
        android:clipChildren="true"
        android:adjustViewBounds="true"
        android:background="@drawable/circle"
        >

        <View
            android:id="@+id/scanner"
            android:layout_width="123.5dp"
            android:layout_height="211.5dp"
            android:layout_gravity="center"
            android:background="@drawable/scanner"
            android:visibility="gone" />

    </RelativeLayout>

scanner

我不想让扫描仪走出国门

4 个答案:

答案 0 :(得分:1)

您需要设置正方形尺寸才能使其显示为圆形。

您的宽度大于您的高度。试试这个

builder.RegisterAssemblyTypes(persistenceAssembly)
        .Where(t => t.Name.EndsWith("Operation"))
        .AssignableTo<Base>()
        .AsImplementedInterfaces()
        .InstancePerLifetimeScope();

答案 1 :(得分:0)

您无需在circle.xml文件中定义圆圈的大小

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke
        android:width="2dp"
        android:color="@android:color/white" />

    <corners android:radius="7.5dp" />
</shape> 

只需更改相对布局的大小即可。它必须与宽度或高度相同。

<RelativeLayout
        android:id="@+id/white_rectangle"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_gravity="center"
        android:clipChildren="true"
        android:adjustViewBounds="true"
        android:background="@drawable/circle"
        >

        <View
            android:id="@+id/scanner"
            android:layout_width="123.5dp"
            android:layout_height="211.5dp"
            android:layout_gravity="center"
            android:background="@drawable/scanner"
            android:visibility="gone" />

    </RelativeLayout>

答案 2 :(得分:0)

对我来说,解决方案是使用CardView并将其赋予cardCornerRadius。

在这里How to make a view in android with rounded corners

答案 3 :(得分:-1)

尝试此库。使用相同的高度和宽度进行查看

https://github.com/hdodenhof/CircleImageView