Miałem to do narysowania, aby 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ć, aby tylko zaokrąglać 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 otrzymuję zwykły prostokąt. Czego tu brakuje?
android
drawable
rounded-corners
Aleks G
źródło
źródło
Odpowiedzi:
Spróbuj podać te wartości:
Zauważ, że zmieniłem się
0dp
na0.1dp
.EDYCJA: Zobacz komentarz Aleksa G poniżej, aby uzyskać czystszą wersję
źródło
<corners android:radius="1dp" android:topLeftRadius="6dp" android:topRightRadius="6dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/>
- daje to idealnie kwadratowe dolne narożniki bez śladu zaokrąglenia. Jednak Twoje rozwiązanie działa.android:radius="1dp"
Spróbuj zrobić coś takiego:
Wydaje się, że ustawienie innego promienia narożnika prostokąta jest nieodpowiednie. Możesz więc użyć tego hacka.
źródło
W moim przypadku poniżej kod
źródło
Opierając się na odpowiedzi busylee , w ten sposób można utworzyć
drawable
tylko jeden nie zaokrąglony róg (w tym przykładzie lewy górny róg):Należy pamiętać, że powyższe nie
drawable
jest poprawnie wyświetlane w podglądzie Android Studio (2.0.0p7). Aby mimo to wyświetlić podgląd, utwórz inny widok i użyj go jako .android:background="@drawable/..."
źródło
Wypróbowałem twój kod i otrzymałem przycisk w górnym rogu. Kolory dałem jak
@ffffff
i kreskę, którą podałem#C0C0C0
.próbować
źródło
Być może będziesz musiał to przeczytać https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
a poniżej jest uwaga.
Uwaga Każdy narożnik musi (początkowo) mieć promień narożnika większy niż 1, w przeciwnym razie żadne rogi nie są zaokrąglane. Jeśli chcesz, aby określone narożniki nie były zaokrąglane, obejście problemu polega na użyciu android: radius w celu ustawienia domyślnego promienia narożnika większego niż 1, ale następnie nadpisanie każdego narożnika wartościami, które naprawdę chcesz, zapewniając zero („0dp” ), gdzie nie chcesz mieć zaokrąglonych rogów.
źródło
Utwórz roung_top_corners.xml na drawable i skopiuj poniższy kod
źródło