0

I am trying to make a layout with rounded bottom left and right corners but none of solution is working for me. I have tried various ways like:

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

    <solid android:color="@android:color/white"/>
    <padding android:right="0dp"
        android:top="0dp"
        android:bottom="0dp"
        android:left="0dp"/>

    <corner
        android:topLeftRadius="0.1dp"
        android:topRightRadius="0.1dp"
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp" />
</shape>

main_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<layout 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">

    <data>

        <import type="android.view.View" />

        <variable
            name="viewModel"
            type="com.abc.mvModel" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@android:color/transparent"
        tools:context=".home.HomeActivity">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bottom_rounded"/>

            <LinearLayout
                android:id="@+id/taskBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bottom_rounded"
                android:orientation="horizontal">

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:paddingTop="5dp"
                    android:paddingLeft="20dp"
                    android:layout_weight="1.7">

                    <ImageView
                        android:layout_width="143dp"
                        android:layout_height="56dp"
                        android:layout_gravity="left|center_vertical"
                        android:layout_marginBottom="5dp"
                        android:src="@drawable/logo" />
                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="3"
                    android:gravity="center"
                    android:orientation="horizontal">

                    <LinearLayout
                        android:id="@+id/learn"
                        android:visibility="gone"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_horizontal"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="33dp"
                            android:layout_height="30dp"
                            android:layout_gravity="center_vertical"
                            android:src="@drawable/learn_icon" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:layout_marginTop="5dp"
                            android:text="@string/learn"
                            android:textColor="@color/lineColor"
                            android:textSize="11sp" />

                        <View
                            android:id="@+id/learn_bar"
                            android:layout_width="match_parent"
                            android:layout_height="2dp"
                            android:layout_marginTop="5dp"
                            android:background="@color/lineColor" />

                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/practice"
                        android:visibility="gone"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="50dp"
                        android:gravity="center_horizontal"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="42dp"
                            android:layout_height="28dp"
                            android:src="@drawable/practice_icon" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:layout_marginTop="5dp"
                            android:text="@string/practice"
                            android:textColor="@color/lineColor"
                            android:textSize="11sp" />

                        <View
                            android:id="@+id/practice_bar"
                            android:layout_width="match_parent"
                            android:layout_height="2dp"
                            android:layout_marginTop="5dp"
                            android:background="@color/lineColor"
                            android:visibility="gone" />

                    </LinearLayout>

                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginRight="20dp"
                    android:layout_weight="1.3"
                    android:gravity="right"
                    android:orientation="horizontal">

                    <LinearLayout
                        android:id="@+id/unlock"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_horizontal"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="26.5dp"
                            android:layout_height="32dp"
                            android:src="@drawable/unlock_blue" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:layout_marginTop="5dp"
                            android:text="@string/unlock"
                            android:textColor="@color/lineColor"
                            android:textSize="11dp" />

                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/language"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="20dp"
                        android:gravity="center_horizontal|bottom"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="33dp"
                            android:layout_height="30dp"
                            android:layout_marginTop="2dp"
                            android:src="@drawable/language" />

                        <TextView
                            android:id="@+id/language_title"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:layout_marginTop="5dp"
                            android:text="@string/lang"
                            android:textColor="@color/lineColor"
                            android:textSize="11dp" />

                    </LinearLayout>

                </LinearLayout>

            </LinearLayout>

        <LinearLayout
            android:id="@+id/appbar_practice"
            android:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimaryDark"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:paddingTop="@dimen/_10sdp">

            <LinearLayout
                android:id="@+id/read_mode"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">

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

                    <ImageView
                        android:layout_width="@dimen/_12sdp"
                        android:layout_height="@dimen/_12sdp"
                        android:background="@drawable/icon_read" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="@dimen/_5sdp"
                        android:fontFamily="@font/nunito_semibold"
                        android:text="@string/read"
                        android:textAllCaps="true"
                        android:textColor="@android:color/white"
                        android:textSize="@dimen/_7ssp" />

                </LinearLayout>

                <View
                    android:id="@+id/read_bar"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/_1sdp"
                    android:layout_marginTop="@dimen/_10sdp"
                    android:background="@android:color/white" />

            </LinearLayout>

            <LinearLayout
            android:id="@+id/speak_mode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/_30sdp"
            android:orientation="vertical">

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

                <ImageView
                    android:layout_width="@dimen/_12sdp"
                    android:layout_height="@dimen/_12sdp"
                    android:background="@drawable/icon_speak" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="@dimen/_5sdp"
                    android:fontFamily="@font/nunito_semibold"
                    android:text="@string/speak"
                    android:textAllCaps="true"
                    android:textColor="@android:color/white"
                    android:textSize="@dimen/_7ssp" />

            </LinearLayout>

            <View
                android:id="@+id/speak_bar"
                android:layout_width="match_parent"
                android:layout_height="@dimen/_1sdp"
                android:layout_marginTop="@dimen/_10sdp"
                android:background="@android:color/white"
                android:visibility="gone" />

        </LinearLayout>

            <LinearLayout
                android:id="@+id/listen_mode"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/_30sdp"
                android:orientation="vertical">

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

                    <ImageView
                        android:layout_width="@dimen/_12sdp"
                        android:layout_height="@dimen/_12sdp"
                        android:background="@drawable/icon_listen" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="@dimen/_5sdp"
                        android:fontFamily="@font/nunito_semibold"
                        android:text="@string/listen"
                        android:textAllCaps="true"
                        android:textColor="@android:color/white"
                        android:textSize="@dimen/_7ssp" />

                </LinearLayout>

                <View
                    android:id="@+id/listen_bar"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/_1sdp"
                    android:layout_marginTop="@dimen/_10sdp"
                    android:background="@android:color/white"
                    android:visibility="gone" />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/write_mode"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/_30sdp"
                android:orientation="vertical">

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

                    <ImageView
                        android:layout_width="@dimen/_12sdp"
                        android:layout_height="@dimen/_12sdp"
                        android:background="@drawable/icon_write" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="@dimen/_5sdp"
                        android:fontFamily="@font/nunito_semibold"
                        android:text="@string/write"
                        android:textAllCaps="true"
                        android:textColor="@android:color/white"
                        android:textSize="@dimen/_7ssp" />

                </LinearLayout>

                <View
                    android:id="@+id/write_bar"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/_1sdp"
                    android:layout_marginTop="@dimen/_10sdp"
                    android:background="@android:color/white"
                    android:visibility="gone" />

            </LinearLayout>

        </LinearLayout>

        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

</layout>

but it is not working and i have also tried by using CardView but it is for only all corners. So please help me out.

Edit: I have added Activity.xml code also.

Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841
Cosmic Dev
  • 522
  • 6
  • 20
  • Does this answer your question? [Android - drawable with rounded corners at the top only](https://stackoverflow.com/questions/8930555/android-drawable-with-rounded-corners-at-the-top-only) – ADM Sep 27 '20 at 11:13
  • this should work. Your `solid` color is white whats the parent background color on which your view is added ? And With `CardView` its bit more complex See [This](https://stackoverflow.com/questions/34454182/round-only-top-corner-of-cardview). – ADM Sep 27 '20 at 11:16
  • @ADM Please review the question I have added the MainActivity code also. I am launching various fragments inside this activity. – Cosmic Dev Sep 27 '20 at 11:57
  • @ADM and I have the same link as you have provided but it did not worked for me so i tried some tweaking. – Cosmic Dev Sep 27 '20 at 11:58
  • 1
    The problem here is your activity background is not transparent that's why you could not see the rounded corners . Just put a colored stroke in `drawable` and u will see the rounded corners. To make an `Activity` transparent you can follow [this](https://stackoverflow.com/questions/2176922/how-do-i-create-a-transparent-activity-on-android) – ADM Sep 27 '20 at 12:05
  • i tried with a colored stroke but it is still displaying square... – Cosmic Dev Sep 27 '20 at 13:42
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/222149/discussion-between-cosmic-dev-and-adm). – Cosmic Dev Sep 27 '20 at 14:16
  • Check https://stackoverflow.com/a/59454788/2016562 – Gabriele Mariotti Sep 30 '20 at 13:51
  • 1
    @GabrieleMariotti This is fixed, I will post the answer soon. – Cosmic Dev Sep 30 '20 at 14:11
  • @GabrieleMariotti https://stackoverflow.com/questions/64122626/how-to-rotate-an-imageview-and-change-the-image-on-it-while-rotation?noredirect=1#comment113391631_64122626 now this one is the new challenge – Cosmic Dev Sep 30 '20 at 14:11

1 Answers1

1

You can use a MaterialShapeDrawable applying a ShapeAppearanceModel with rounded bottom corners.
Something like:

    val radius = resources.getDimension(R.dimen.cornerSize16)

    val linearLayout = findViewById<LinearLayout>(R.id.layout)
    val shapeAppearanceModel = ShapeAppearanceModel()
        .toBuilder()
        .setBottomLeftCorner(CornerFamily.ROUNDED, radius)
        .setBottomRightCorner(CornerFamily.ROUNDED, radius)
        .build()

    val shapeDrawable = MaterialShapeDrawable(shapeAppearanceModel)
    shapeDrawable.fillColor = ContextCompat.getColorStateList(this, R.color....)
    ViewCompat.setBackground(linearLayout, shapeDrawable)

enter image description here

Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841