Нижние закругленные углы - Android - PullRequest
0 голосов
/ 23 октября 2019

Я пытался это исправить, но что бы я ни делал, я просто не могу получить нижние закругленные углы так, как хочу, я использую следующее

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape android:shape="rectangle">
            <stroke android:width="0dp"  />
            <solid android:color="?attr/colorPrimaryDark"  />
      </shape>
   </item>
   <item android:top="0dp" android:bottom="1dp"> 
      <shape 
        android:shape="rectangle">
            <stroke android:width="0dp"/>
            <solid android:color="?attr/colorPrimary"/>
             <corners android:radius="15dp" android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="0dp" android:topRightRadius="0dp"/> 
        </shape>
   </item>
</layer-list> 

Результаты следующие

Screenshot

Он создает углы, но добавляет к нему серый цвет (colorPrimaryDark), где я хочу, чтобы он был белым (colorPrimary") с серой линией - Есть идеи, как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Небольшой взлом позволяет избавиться от линии сверху и по бокам: установить отрицательные смещения.

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

    <item
            android:left="-1dp"
            android:right="-1dp"
            android:top="-1dp">
        <shape android:shape="rectangle">
            <stroke
                    android:width="1dp"
                    android:color="?attr/colorPrimaryDark" />
            <solid android:color="?attr/colorPrimary" />
            <corners
                    android:bottomLeftRadius="15dp"
                    android:bottomRightRadius="15dp"
                    android:radius="15dp"
                    android:topLeftRadius="0dp"
                    android:topRightRadius="0dp" />
        </shape>
    </item>

</layer-list>

Не уверен, что он будет работать правильно на всех устройствах / версиях Android или нет.

1 голос
/ 23 октября 2019

Если вы хотите использовать только нижнюю границу, будет достаточно нарисовать фигуру. Вам не нужно layer-list для этого. попробуйте это

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1dp" android:color="@color/green"/>
<solid android:color="?attr/colorPrimary" />
<corners
        android:bottomLeftRadius="15dp"
        android:bottomRightRadius="15dp" />
</shape>

Проблема с вашим текущим кодом в том, что у первого элемента установлен сплошной цвет. вот почему отображается серая часть.

...