Tak więc w tej chwili mam przycisk, który wygląda jak pierwszy obrazek powyżej. Jak zmniejszyć dopełnienie tekstu wewnątrz samego przycisku (aby wyglądać bardziej jak drugi obraz)?
Szerokość i wysokość układu są ustawione jako:
android:layout_width="match_parent"
android:layout_height="wrap_content"
Kształt stylu niestandardowego ma parametry "
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
Reszta to tylko atrybuty kolorów i wartości promieni.
Aby było jasne, chcę, aby ramka przycisku obejmowała bliżej tekst „Login”.
Wszelka pomoc i opinie są bardzo mile widziane. Dzięki.
android:includeFontPadding="false"
Odpowiedzi:
Znalezienie tego zajęło mi wieczność, ale „dopełnienie” wokół tekstu na przycisku tak naprawdę wcale nie jest dopełnieniem. Domyślny styl Widget.Button zawiera właściwość minHeight. Zmiana minHeight na przycisku umożliwi dostosowanie wypełnienia zgodnie z oczekiwaniami.
<Button android:id="@+id/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/test" android:textColor="@color/black" android:minHeight="40dip"/> <style name="Widget.Holo.Button" parent="Widget.Button"> <item name="android:background">@android:drawable/btn_default_holo_dark</item> <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> <item name="android:textColor">@android:color/primary_text_holo_dark</item> <item name="android:minHeight">48dip</item> <item name="android:minWidth">64dip</item> </style>
źródło
spróbuj tego w swoim niestandardowym pliku shape.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="1dp" android:padding="1dp">
możesz również wprowadzić zmiany w pliku XML swojego przycisku
android:layout_width="wrap_content" android:layout_height="wrap_content"
źródło
W Components Library materiału,
MaterialButton
posiada domyślny styl zinsetBottom
iinsetTop
o wartości6dp
.Możesz je zmienić w układzie:
<com.google.android.material.button.MaterialButton android:insetTop="0dp" android:insetBottom="0dp" ../>
lub w stylu:
<style name="Button_no_insets" parent="Widget.MaterialComponents.Button"..> <item name="android:insetTop">0dp</item> <item name="android:insetBottom">0dp</item> </style>
źródło
Jeśli chcesz mieć mniejszą górną i dolną wyściółkę, użyj tego:
android:paddingTop="2dp" android:paddingBottom="2dp"
źródło
android:padding
lubandroid:layout_margin"
w widokach nadrzędnych programu<shape />
.Możesz użyć stylu bez obramowania w AppCompatButton, jak poniżej. Użyj również preferowanego koloru tła.
Kod przycisku
<androidx.appcompat.widget.AppCompatButton android:id="@+id/button_visa_next" android:background="@color/colorPrimary" style="@style/Widget.AppCompat.Button.Borderless.Colored" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing_normal" android:text="@string/next" android:textColor="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" />
Wynik:
źródło