Android-drawable z zaokrąglonymi rogami tylko u góry
Miałem ten rysowalny mieć zaokrąglony prostokąt jako tło:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<stroke android:width="1dp" android:color="@color/light_gray" />
<padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
<corners android:radius="6dp" />
</shape>
To działa dobrze, zgodnie z oczekiwaniami.
Teraz chcę to zmienić tylko na górne rogi, więc zmieniam to na to:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<stroke android:width="1dp" android:color="@color/light_gray" />
<padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
<corners android:topLeftRadius="6dp" android:topRightRadius="6dp"
android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/>
</shape>
Ale teraz żaden z rogów nie jest zaokrąglony i mam zwykły prostokąt. Co mi umyka?
6 answers
Spróbuj podać te wartości:
<corners android:topLeftRadius="6dp" android:topRightRadius="6dp"
android:bottomLeftRadius="0.1dp" android:bottomRightRadius="0.1dp"/>
Zauważ, że zmieniłem 0dp
na 0.1dp
.
EDIT: Zobacz Aleks G komentarz poniżej dla wersji cleaner
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-19 07:00:57
Spróbuj zrobić coś takiego:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:bottom="-20dp" android:left="-20dp">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="20dp" />
</shape>
</item>
</layer-list>
Wydaje się, że nie nadaje się do ustawiania innego promienia narożnika prostokąta. Więc możesz użyć tego hacka.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-06 13:27:38
Bazując na busylee ' s answer , w ten sposób możesz stworzyć drawable
, która ma tylko jeden unzaokrąglony róg (lewy górny róg, w tym przykładzie):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<!-- A numeric value is specified in "radius" for demonstrative purposes only,
it should be @dimen/val_name -->
<corners android:radius="10dp" />
</shape>
</item>
<!-- To keep the TOP-LEFT corner UNROUNDED set both OPPOSITE offsets (bottom+right): -->
<item
android:bottom="10dp"
android:right="10dp">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
</shape>
</item>
</layer-list>
Należy pamiętać, że powyższe drawable
jest nie wyświetlane poprawnie w Android Studio preview (2.0. 0P7). Aby wyświetlić podgląd, Utwórz inny widok i użyj go jako android:background="@drawable/..."
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:10
W moim przypadku poniżej kodu
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="10dp" android:bottom="-10dp"
>
<shape android:shape="rectangle">
<solid android:color="@color/maincolor" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
/>
</shape>
</item>
</layer-list>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-05 13:02:57
Próbowałem Twojego kodu. mam guzik w górnym zaokrąglonym rogu. kolory dałem jako @ffffff a srtoke dałem #C0C0C0. spróbuj 1) podając android: bottomLeftRadius= "0.1 dp" zamiast 0. jeśli nie działa 2) Sprawdź, co można narysować i rozdzielczość emulatorów. utworzyłem folder drawable pod res i używałem go. (hdpi, mdpi ldpi) folder masz ten xml. this is my ouput
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-19 18:29:54
Możesz potrzebować przeczytać to https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
A poniżej notka.
Uwaga każdy narożnik musi (początkowo) mieć promień narożnika większy niż 1, w przeciwnym razie żadne narożniki nie są zaokrąglone. Jeśli chcesz, aby określone narożniki nie były zaokrąglane, obejściem jest użycie Android: radius, aby ustawić domyślny promień narożnika większy niż 1, ale następnie zastąpić każdy róg wartościami, które naprawdę chcesz, zapewniając zero ("0dp"), gdzie nie chcesz zaokrąglać rogów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-29 01:48:14