Jak wspomniano android:drawablePadding
cephus wymusi wypełnienie między tekstem a rysunkiem tylko wtedy, gdy przycisk jest wystarczająco mały.
Podczas układania większych przycisków można używać android:drawablePadding
w połączeniu z android:paddingLeft
i, android:paddingRight
aby wymusić tekst i możliwość rysowania do wewnątrz w kierunku środka przycisku. Dostosowując osobno lewą i prawą wyściółkę, możesz bardzo szczegółowo dostosować układ.
Oto przykładowy przycisk, który używa dopełnienia, aby zbliżyć tekst i ikonę bliżej siebie niż byłoby to domyślnie:
<Button android:text="@string/button_label"
android:id="@+id/buttonId"
android:layout_width="160dip"
android:layout_height="60dip"
android:layout_gravity="center"
android:textSize="13dip"
android:drawableLeft="@drawable/button_icon"
android:drawablePadding="2dip"
android:paddingLeft="30dip"
android:paddingRight="26dip"
android:singleLine="true"
android:gravity="center" />
passwordToggleDrawable
lewa przerwa na wypełnianie staje się większa, ponieważ nie jest w stanie określić docelowego tylko lewego rysowania.TextView ma android: drawablePadding mienia, które powinno załatwić sprawę:
źródło
android:drawablePadding
utworzy odstęp wypełniania między tekstem a rysunkiem, tylko jeśli przycisk jest wystarczająco mały, aby ściśnąć 2 razem. Jeśli przycisk jest szerszy niż łączna szerokość (dla drawableLeft / drawableRight) lub wysokość (dla drawableTop / drawableBottom), wówczas drawablePadding nic nie robi.Ja też mam z tym problem. Moje przyciski są dość szerokie, a ikona wisi na lewej krawędzi przycisku, a tekst jest wyśrodkowany na środku. Moim jedynym sposobem obejścia tego problemu jest upieczenie marginesu na rysunku, dodając puste piksele do lewej krawędzi płótna w Photoshopie. Nie jest to idealne i też nie jest zalecane. Ale to na razie moje rozwiązanie stop-gap, bez odbudowywania TextView / Button.
źródło
Tak. użyj drawablePadding w następujący sposób,
źródło
Stwórz swój drawable resources.xml
źródło
android:drawablePadding
jest najłatwiejszym sposobem nadania wypełnienia ikonie do rysowania, ale nie można podać określonej wypełnienia z jednej strony, takiej jakpaddingRight
lubpaddingLeft
ikony do rysowania. Aby to osiągnąć, musisz w nią zagłębić. A jeśli złożysz podaniepaddingLeft
lubpaddingRight
doEdittext
niego, toEdittext
wstawi wypełnienie do całości wraz z ikoną do rysowania.źródło
zdefiniuj kształt dla swojego tekstu edycyjnego i nadaj mu dopełnienie Na przykład
Dopełnienie zdefiniowane w tym kształcie pomoże w dopełnieniu do przeciągnięcia w lewo lub w prawo ---------------------- Zastosuj ten kształt w EditView
użycie tego zdefiniowanego kształtu jako tła da Twojemu EditText trochę stylu plus margines do drawableLeft.
źródło
android: drawable Padding to najprostszy sposób nadania wypełnienia ikonie do rysowania, ale nie można podać określonego wypełnienia z jednej strony, takiego jak paddingRight lub paddingLeft z drawable icon.Aby to osiągnąć, musisz się w to zagłębić. A jeśli zastosujesz paddingLeft lub paddingRight do Edittext, wówczas wstawi padding do całego Edittext wraz z ikoną do rysowania.
źródło
Uwaga: szerokość_szablonu musi być zawijana_zawartość i używać paddingLeft paddingRight drawablePadding, aby kontrolować odstęp. Jeśli określisz wartość layout_width, wartość będzie miała odstęp między ikoną a tekstem, myślę, że gdy nadasz parametrowi layout_width określoną wartość, dopełnienie będzie mierzyć.
źródło
Wrzucę też moją odpowiedź na ring. Jeśli chcesz to zrobić programowo, możesz wykonać następujące czynności.
Spowoduje to dodanie dopełnienia na końcu rysunku, gdzie koniec będzie oznaczał lewo / prawo, w zależności od tego, czy telefon jest w trybie LTR czy RTL.
źródło
Zamiast
Button
stosowaniaLinearLayout
zImageView
orazTextView
wewnątrz. W elementach podrzędnych takich jakImageView
iTextView
używajandroid:duplicateParentState="true"
.źródło
Powinieneś rozważyć użycie listy warstw
Utwórz plik do rysowania, taki jak ten, nazwij go ic_calendar.xml
W pliku układu
źródło
Możesz użyć padding dla przycisku i możesz grać z padablePadding
możesz użyć konkretnego paddingu w zależności od tego, gdzie umieścisz swój drawable, z Androidem: paddingLeft = "10dp" lub androidem: paddingBottom = "10dp" lub androidem: paddingRight = "10dp" lub androidem: paddingTop = "10dp"
źródło
Możesz użyć,
android:drawableLeft="@drawable/your_icon"
aby ustawić rysunek, który będzie wyświetlany po lewej stronie. Aby ustawić padding dla drawable, należy użyćandroid:paddingLeft
lub,android:paddingRight
aby ustawić odpowiednio lewe / prawe padding.źródło
Jeśli rozmiar zasobu do rysowania jest stały, możesz to zrobić w następujący sposób:
Kluczem jest tutaj:
Oznacza to, że rozmiar zasobu do rysowania plus paddingRight to paddingLeft.
Możesz zobaczyć wynik w tym przykładzie
źródło
źródło
po prostu przerób z:
do
źródło
Próbuje użyć ujemnego wypełnienia
Lubić:
źródło