Rounded Inner corners with transparent inside frame

后端 未结 3 1700
旧巷少年郎
旧巷少年郎 2020-12-25 12:23

I am trying to make a frame from code so that I can apply it to make rounded inner corners with a solid fill outside and transparent inside. Just like a solid re

相关标签:
3条回答
  • 2020-12-25 12:48

    tweaking @Nima K solution, to avoid using an extra View

    create frame.xml @ drawable

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item
            android:bottom="-10dp"
            android:left="-10dp"
            android:right="-10dp"
            android:top="-10dp">
            <shape android:shape="rectangle">
                <stroke
                    android:width="20dp"
                    android:color="@color/frame_color" />
                <corners android:radius="30dp" />
            </shape>
        </item>
    
        <item>
            <shape android:shape="rectangle">
                <solid android:color="@android:color/transparent" />
    
                <stroke
                    android:width="20dp"
                    android:color="@color/frame_color" />
    
                <corners android:radius="40dp" />
            </shape>
    
        </item>
    
    </layer-list>
    

    Then use it with 'android:background' attribute of your view

    <TextView
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/frame" />
    

    And this is the result

    0 讨论(0)
  • 2020-12-25 13:08

    First of all, create 3 xml layout in drawable folder:

    1. First: frame.xml
    2. Second: frame_build.xml
    3. Third: red.xml

    (You can change this name as you wish),

    frame.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:bottom="20dp" android:drawable="@drawable/red" android:top="-25dp" />
        <item android:bottom="15dp" android:drawable="@drawable/frame_build" android:top="5dp" android:left="-5dp" android:right="-5dp" />
    </layer-list>
    

    frame_build.xml :

    <?xml version="1.0" encoding="UTF-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
        <corners android:radius="40dp" />
    </shape>
    

    red.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <stroke android:width="40dp" android:height="40dp" android:color="#B22222" />
        <padding android:left="8dp" android:top="-1dp" android:right="8dp" android:bottom="9dp" />
        <corners android:radius="-10dp" />
    </shape>
    

    Finally refer your view or layout to Frame XML as follow :

      android:background="@drawable/frame"
    

    This tested and output as below image:

    Output image

    Hope this help .

    0 讨论(0)
  • 2020-12-25 13:10

    create the following rounded_corner.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:bottom="-10dp"
            android:left="-10dp"
            android:right="-10dp"
            android:top="-10dp">
            <shape android:shape="rectangle">
                <stroke
                    android:width="10dp"
                    android:color="#ffffff" />
                <corners android:radius="20dp" />
            </shape>
        </item>
    </layer-list>
    

    add this below your imageView, which you want to apply the frame on it:

    <View
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignBottom="@+id/my_image_view"
        android:layout_alignLeft="@id/my_image_view"
        android:layout_alignRight="@+id/my_image_view"
        android:layout_alignTop="@id/my_image_view"
        android:background="@drawable/rounded_corner" />
    
    0 讨论(0)
提交回复
热议问题