自定义形状的Linearlayout,在android中有弯曲的一面

Sum*_*ade 14 android android-xml android-drawable android-shape

我正在尝试制作如下所示的自定义形状的线性布局

在此输入图像描述

我试图只使一侧弯曲.尝试了角半径,但它没有给出与上面相同的外观.

已尝试过如下背景形状: -

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

    <padding
        android:bottom="7dp"
        android:left="7dp"
        android:right="7dp"
        android:top="7dp" />

    <corners
        android:bottomLeftRadius="50dp"
        android:bottomRightRadius="50dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

它只对角进行四舍五入,并且在增加值时,形状不会被保留,它会变得太圆.我想弯曲线而不是圆角

Mas*_*sum 6

在drawable文件夹中创建一个shape文件,例如:my_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
   <corners
      android:bottomLeftRadius="100dp"
      android:bottomRightRadius="100dp"
      android:topLeftRadius="0dp"
      android:topRightRadius="0dp" />
   <padding
      android:bottom="0dp"
      android:left="0dp"
      android:right="0dp"
      android:top="0dp" />
   <stroke
      android:width="0.5dp"
      android:color="@color/theme_red" />
  <solid android:color="@color/white" />
</shape> 
Run Code Online (Sandbox Code Playgroud)

然后在您的布局中添加此形状作为背景.例如:

<LinearLayout
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="@drawable/my_shape"
     android:orientation="horizontal">             
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)


Ale*_*lan 6

它已经很晚了,但这是为将来的求职者准备的。我认为矢量可绘制对象是最完美的解决方案。使用以下向量作为背景可获得自定义形状的底部弯曲布局。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="100.0"
android:viewportWidth="200.0">
<path
    android:fillColor="#YOUR_FAVORITE_COLOR"
    android:pathData="M200,0H0v4.5h0v75.8h0c17.8,10.2 56,17.2 100.5,17.2c44.5,0 81.6,-7 99.5,-17.2h0V4.5h0V0z" />
Run Code Online (Sandbox Code Playgroud)


Ris*_*esh 5

我所做的是创建一个可绘制的 allowaccess_button_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="oval">
            <solid android:color="@color/colorPrimary"/>
        </shape>
    </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

尝试以下布局

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:background="@color/colorPrimary"
        android:layout_height="110dp">
    </RelativeLayout>

    <ImageView
        android:layout_marginTop="85dp"
        android:src="@drawable/allowaccess_button_normal"
        android:layout_width="match_parent"
        android:layout_height="50dp" />


</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Mey*_*ari 5

shape_curve.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle" />
    </item>

    <item
        android:bottom="0dp"
        android:left="-100dp"
        android:right="-100dp"
        android:top="-80dp">
        <shape android:shape="oval">
            <solid android:color="@color/colorAccent" />
        </shape>
    </item>
Run Code Online (Sandbox Code Playgroud)

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="@drawable/shape_curve"
    android:orientation="horizontal" />
Run Code Online (Sandbox Code Playgroud)


Nee*_*ava 0

您可以在值 -dimension.xml 中设置尺寸,然后将其设置在线性布局的 xml 中,它将给出如下所示

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
   android:color="#FFFF00" />
<padding android:left="7dp"
    android:top="7dp"
    android:right="7dp"
    android:bottom="7dp" />
Run Code Online (Sandbox Code Playgroud)

只需在您的可绘制对象中创建一个 xml 文件,设置您需要的尺寸,然后通过线性布局调用它