In meiner Android-App habe ich folgendes Layout:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
class="com.google.android.gms.maps.SupportMapFragment"/>
<Button
android:id="@+id/button_back"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="CloseActivity"
android:padding="0dp"
android:text="@+string/back" />
</LinearLayout>
In der Vorschau und auf dem Telefon sieht es so aus:
Wie Sie auf der Schaltfläche im unteren Bereich sehen können, gibt es dort einige Polster.
Wie kann ich das loswerden und die Schaltfläche den unteren Bereich vollständig ausfüllen lassen?
Antworten:
Für mich stellte sich heraus, dass das Problem bei einigen Android-Themen minHeight und minWidth war.
Fügen Sie im Button-Element Folgendes hinzu:
Oder im Stil Ihrer Schaltfläche:
quelle
Button
Gerät auch nach dem Einstellen noch so viel Platz beanspruchtandroid:background="@null"
. Die Tatsache, dass derButton
Standardstil des Benutzers verantwortlich ist, ist ein sehr guter Tipp.Meine Lösung wurde für die Eigenschaften insetTop und insetBottom auf 0 gesetzt.
quelle
Das ist kein Auffüllen, sondern der Schatten um die Schaltfläche im Hintergrund, der gezeichnet werden kann. Erstellen Sie Ihren eigenen Hintergrund und es wird verschwinden.
quelle
Eine Problemumgehung kann darin bestehen,
-ve
Werte für Ränder wie die folgenden zu verwenden:Es wird diesen Raum verschwinden lassen. Ich meine, Sie können den geeigneten
dip
Wert auswählen , wodurch er verschwindet. Es hat bei mir funktioniert. Hoffe es funktioniert bei dir.quelle
Zum Entfernen der Polsterung um die Umschalttaste müssen minWidth und minHeight 0dp eingestellt werden.
android:minWidth="0dp" android:minHeight="0dp"
Setzen Sie Ihre zeichnbare Datei auf ein Schaltflächenattribut wie:
android:button="@drawable/toggle_selector"
Unten ist meine
toggle_selecter.xml
Dateiquelle
Ich bin neu in Android, aber ich hatte eine ähnliche Situation. Ich habe getan, was @Delyan vorgeschlagen hat, und auch android verwendet: background = "@ null" in der XML-Layoutdatei.
quelle
Im XML-Set der Schaltfläche
android:includeFontPadding="false"
quelle
Ich hatte das gleiche Problem und es scheint, dass es an der Hintergrundfarbe der Schaltfläche liegt. Versuchen Sie, die Hintergrundfarbe in eine andere Farbe zu ändern, z.
und sehen, ob es funktioniert. Sie können dann einen Stil definieren, wenn die Schaltfläche verwendet werden soll.
quelle
Es ist keine Polsterung, sondern der Schatten des Hintergrunds oder ein Problem mit dem
minHeight
undminWidth
.Wenn Sie immer noch den schönen Welleneffekt wünschen, können Sie Ihren eigenen Schaltflächenstil erstellen, indem Sie
?attr/selectableItemBackground
:Und wende es auf die Schaltfläche an:
quelle
Es scheint nicht Polsterung, Rand oder Mindesthöhe / -breite zu sein. Das Einstellen
android:background="@null"
der Schaltfläche verliert ihre Touch-Animation, aber es stellt sich heraus, dass das Einstellen des Hintergrunds auf irgendetwas diesen Rand behebt.Ich arbeite derzeit mit:
quelle
Entfernen der oberen und unteren Polsterung
Entfernen der linken und rechten Polsterung
quelle
Geben Sie Ihrer Schaltfläche einen benutzerdefinierten Hintergrund: @ drawable / material_btn_blue
quelle
Sie können dies auch mit
layout_width(height)
Parametern tun .ZB habe ich den oberen und unteren Bereich mit
android:layout_height="18dp"
Code gelöscht .quelle
Ein Standardknopf sollte nicht in voller Breite verwendet werden , weshalb dies auftritt.
Hintergrund
Wenn Sie sich das Materialdesign - Schaltflächenstil ansehen, werden Sie feststellen, dass eine Schaltfläche einen Klickbereich von 48 dp Höhe hat, aber aus irgendeinem Grund als 36 dp Höhe angezeigt wird.
Dies ist der Hintergrundumriss, den Sie sehen und der nicht den gesamten Bereich der Schaltfläche selbst abdeckt.
Es hat abgerundete Ecken und einige Polsterungen und soll von selbst anklickbar sein, seinen Inhalt einwickeln und nicht die gesamte Breite am unteren Bildschirmrand überspannen.
Lösung
Wie oben erwähnt, möchten Sie einen anderen Hintergrund . Keine Standardschaltfläche, sondern ein Hintergrund für ein auswählbares Element mit diesem schönen Welleneffekt.
Für diesen Anwendungsfall gibt es das
?selectableItemBackground
Themenattribut, das Sie für Ihre Hintergründe verwenden können (insbesondere in Listen).Es wird eine Plattform-Standardwelligkeit (oder eine Farbstatusliste auf <21) hinzugefügt und Ihre aktuellen Themenfarben verwendet.
Für Ihren Anwendungsfall können Sie einfach Folgendes verwenden:
Es ist auch nicht erforderlich, Layoutgewichte hinzuzufügen, wenn Ihre Ansicht die einzige ist und sich über den gesamten Bildschirm erstreckt
Wenn Sie eine andere Vorstellung davon haben, wie Ihr Hintergrund aussehen soll, müssen Sie selbst ein benutzerdefiniertes Zeichen erstellen und dort Farbe und Status verwalten.
quelle
Nach Stunden der mehrere Antworten zu graben um , fand ich endlich eine Lösung , die kein anderes Element nicht verwendet, manipulieren
minHeight
oderminWidth
oder sogar UmwickelnButton
um einenRelativeLayout
.Der wichtigste Aspekt hierbei ist die Einstellung des Vordergrunds anstelle des Hintergrunds, wie in vielen Antworten festgelegt.
selectableItemBackground
Wenn Sie den Hintergrund selbst ändern , werden alle Änderungen, die Sie an der Farbe / dem Hintergrund der Schaltfläche vorgenommen haben, überschrieben, sofern vorhanden.Wenn Sie den Vordergrund ändern, erhalten Sie das Beste aus beiden Welten: Entfernen Sie die "unsichtbare" Polsterung und behalten Sie das Design Ihrer Schaltfläche bei.
quelle
Sie können mit Borderless Stil in AppCompatButton wie unten. und benutze Android: Hintergrund damit.
Schaltflächencode
Ausgabe:
quelle