Half circle shape not work

48,973

Solution 1

You cannot create a semicircle from xml. but you could achieve what you are looking for using a circle with appropriate margin & padding.

You can use a circle shape .xml file. Create a fixed sized circle like this:

Example:

<?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>

enter image description here

Solution 2

you can try this :

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#900021df"/>
    <size
        android:width="10dp"
        android:height="5dp"/>
    <corners
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"/>
</shape>

it gives this shape:

Solution 3

curve_toolbar_bg.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/colorPrimary" />
        </shape>
    </item>
</layer-list>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="0dp"
        android:layout_height="?android:attr/actionBarSize"
        android:background="@drawable/rounded_corner"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0">

    </android.support.v7.widget.Toolbar>
</android.support.constraint.ConstraintLayout>

Curve shape toolbar

Solution 4

Try this. Remove the gradient part then it will look like same as you want.

<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#00B0EA" />

    </shape>
</item>
<item
    android:bottom="400dp"
    android:left="-100dp"
    android:right="-100dp"
    android:top="-200dp">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <gradient
            android:angle="90"
            android:endColor="#65FFFFFF"
            android:startColor="#65FFFFFF" />
    </shape>
</item>
<item
    android:bottom="402dp"
    android:left="-100dp"

    android:right="-100dp"
    android:top="-280dp">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <solid android:color="#FFFFFF" />
    </shape>
</item>

enter image description here

Solution 5

Background.xml


<?xml version="1.0" encoding="utf-8"?>
<layer-list  xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:bottom="410dp"
        android:left="-100dp"
        android:right="-100dp"
        android:top="-300dp">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">

            <solid android:color="#7181A1" />
        </shape>
    </item>
</layer-list>

Output like

enter image description here

Share:
48,973
fanjavaid
Author by

fanjavaid

Updated on April 24, 2021

Comments

  • fanjavaid
    fanjavaid about 3 years

    I try to create half circle background, in development IDE preview it works, but when I launch in emulator it doesn't work.

    enter image description here

    Here is my shape code :

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:height="50dp">
            <shape>
                <solid android:color="@color/colorAccentDark" />
            </shape>
        </item>
        <item android:top="-500dp" android:bottom="0dp" android:left="-100dp" android:right="-100dp">
            <shape>
                <corners android:radius="500dp" />
                <solid android:color="@color/colorAccentDark" />
            </shape>
        </item>
    </layer-list>
    

    And here is my layout code :

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/background_profile"
            android:layout_weight="1">
    
            <de.hdodenhof.circleimageview.CircleImageView
                android:id="@+id/profile_avatar"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_default_avatar"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="50dp"/>
    
            <TextView
                android:id="@+id/profile_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_below="@id/profile_avatar"
                android:layout_marginTop="20dp"
                android:textColor="@color/neutralWhite"
                android:textStyle="bold"
                android:textSize="18sp"
                android:text="Avatar Ang"/>
    
        </RelativeLayout>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4.04">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Hello Android!"/>
    
        </RelativeLayout>
    
    </LinearLayout>
    

    Maybe any other tweak to handle that? Thank you

  • Maveňツ
    Maveňツ almost 7 years
    @HardikJoshi read my answer completely You cannot create a semicircle from xml. but you could achieve what you are looking for using a circle with appropriate margin & padding.
  • Balasubramanian
    Balasubramanian over 3 years
    Its works. Will the shape affect performance?
  • Bhaskara
    Bhaskara almost 3 years
    Thank you. This works for other views like Bottom Navigation, Text Views as well