it-swarm.com.de

So entfernen Sie das Auffüllen von Schaltflächen in Android?

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, ist dort etwas Polsterung vorhanden.

Wie kann ich das loswerden und den Knopf den unteren Bereich voll ausfüllen lassen?

140
omega

Für mich stellte sich heraus, dass das Problem bei einigen der Android) - Themen minHeight und minWidth war.

Fügen Sie im Button-Element Folgendes hinzu:

<Button Android:minHeight="0dp" Android:minWidth="0dp" ...

Oder im Stil Ihrer Schaltfläche:

<item name="Android:minHeight">0dp</item>
<item name="Android:minWidth">0dp</item>
367
D. A. Terre

Das ist keine Polsterung, es ist der Schatten um die Schaltfläche im Hintergrund, der gezeichnet werden kann. Erstelle deinen eigenen Hintergrund und er verschwindet.

42
Delyan

Eine Problemumgehung kann darin bestehen, zu versuchen, -ve - Werte für Ränder wie die folgenden zu verwenden:

<Button
    Android:id="@+id/button_back"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:onClick="CloseActivity"
    Android:padding="0dp"
    Android:layout_marginLeft="-5dip"
    Android:layout_marginRight="-5dip"
    Android:layout_marginTop="-5dip"
    Android:layout_marginBottom="-5dip"
    Android:text="@string/back" />

Es wird diesen Raum verschwinden lassen. Ich meine, Sie können den entsprechenden dip -Wert auswählen, wodurch er nicht mehr angezeigt wird. Es hat bei mir funktioniert. Ich hoffe, es funktioniert für Sie.

22
Shobhit Puri

Zum Entfernen des Umfüllens der Umschalttaste müssen minWidth und minHeight 0dp eingestellt werden .Android:minWidth="0dp" Android:minHeight="0dp"

  <ToggleButton
        Android:id="@+id/toggle_row_notifications"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:minWidth="0dp"
        Android:minHeight="0dp"
        Android:layout_alignParentRight="true"
        Android:layout_centerVertical="true"
        Android:padding="@dimen/_5sdp"
        Android:textOn=""
        Android:textOff=""
        Android:background="@Android:color/transparent"
        Android:button="@drawable/toggle_selector"
        />

setze deine zeichnbare Datei auf ein Button Attribut wie: Android:button="@drawable/toggle_selector"

Unten ist mein toggle_selecter.xml Datei

<?xml version="1.0" encoding="utf-8"?>
     <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
            <item Android:drawable="@drawable/notifications_toggle_on" 
                  Android:state_checked="true"/>
            <item Android:drawable="@drawable/notifications_toggle_off" 
                  Android:state_checked="false"/>
     </selector>
12
Yashoda Bane

Ich bin neu in Android, aber ich hatte eine ähnliche Situation. Ich habe das getan, was @Delyan vorgeschlagen und auch Android verwendet hat: background = "@ null" in der XML-Layoutdatei.

8
Casey Murray

Sie sollten die Attribute minHeight und minWidth in der Schaltfläche verwenden und sicherstellen, dass padding verwendet wird.

    Android:minHeight="0dp"
    Android:minWidth="0dp"
7
viper

Ich hatte das gleiche Problem und es scheint, dass es am Hintergrundfarbe der Taste liegt. Versuchen Sie, die Hintergrundfarbe in eine andere Farbe zu ändern, z.

Android:background="@color/colorActive"

und sehen, ob es funktioniert. Sie können dann einen Stil definieren , den die Schaltfläche verwenden soll.

6
Panagiotis

Im XML-Set der Schaltfläche Android:includeFontPadding="false"

6
user1005462

Es ist kein Auffüllen, sondern der Schatten des zu zeichnenden Hintergrunds oder ein Problem mit minHeight und minWidth.

Wenn Sie immer noch den Effekt "Nice Ripple" wünschen, können Sie mit ?attr/selectableItemBackground Ihren eigenen Schaltflächenstil erstellen:

<style name="Widget.AppTheme.MyCustomButton" parent="Widget.AppCompat.Button.Borderless">
    <item name="Android:minHeight">0dp</item>
    <item name="Android:minWidth">0dp</item>
    <item name="Android:layout_height">48dp</item>
    <item name="Android:background">?attr/selectableItemBackground</item>
</style>

Und wende es auf die Schaltfläche an:

<Button 
    style="@style/Widget.AppTheme.MyCustomButton"
    ... />
4
Allan Veloso

Es scheint nicht Polsterung, Rand oder minimale Höhe/Breite zu sein. Einstellung Android:background="@null" Die Schaltfläche verliert ihre Berührungsanimation, aber es stellt sich heraus, dass das Festlegen des Hintergrunds auf irgendetwas diese Grenze überhaupt repariert.


Ich arbeite derzeit mit:

minSdkVersion 19
targetSdkVersion 23
2
juil

Verleihen Sie Ihrem Button einen benutzerdefinierten Hintergrund: @ drawable/material_btn_blue

0
Mike6679

Sie können dies auch mit layout_width(height) -Parametern tun.

Z.B. Ich habe den oberen und unteren Bereich mit dem Code Android:layout_height="18dp" Gelöscht.

0
EAMax