Einen AppCompatButton in v21 so gestalten, dass er keinen Schatten- und Eckenradius von Null hat

8

Ich habe einen AppCompatButton in einem XML-Layout definiert, und ich habe ein Thema dafür festgelegt:

%Vor%

Und ich habe festgelegt:

%Vor%

um den Schatten zu entfernen. Ich habe zwei Probleme damit.

Die Höhe der Schaltfläche wird von der Höhe des Schattens abgezogen, auch wenn der Schatten nicht angezeigt wird. Soll ich den Schatten auf andere Weise entfernen oder wie behebe ich das?

Der Knopf hat abgerundete Ecken und ich möchte, dass die Ecken scharf sind. Ich kann keinen Hintergrund auf die Schaltfläche setzen, da ich den Standard-Ripple-Effekt beibehalten möchte und dieser verschwindet, wenn ich einen Hintergrund einstelle (zumindest weiß ich nicht, wie ich ihn behalten soll, wenn ich einen Hintergrund einstelle). Ich habe versucht,

einzustellen %Vor%

und alle anderen Ecken des CustomAccentOverlay-Themas und des entsprechenden Stils, aber es funktioniert nicht. Wie kann ich den Eckenradius auf meiner Schaltfläche auf Null setzen?

Vielen Dank Søren

    
Neigaard 19.04.2016, 13:54
quelle

4 Antworten

5

Verwenden Sie den folgenden Code für den Button.

%Vor%

Ich werde die Attribute erklären.

  1. android: Höhe="0dp" und android: stateListAnimator="@ null". Kein Schatten für den Button.

  2. Android: Hintergrund. Stellen Sie die gewünschte Farbe als Hintergrund ein. Es entfernt die abgerundeten Ecken.

  3. android: Vordergrund="? attr / selectableItemBackground". Es gibt den Welleneffekt, wenn die Taste gedrückt wird.

Update 1:

Es scheint wie android: Vordergrund-Attribut für View funktioniert von API 23. Erstellen Sie unter APIs ein Drawable mit Ripple im Ordner "drawable-v21" und legen Sie es als Hintergrund für die Schaltfläche

fest %Vor%

Erstellen Sie für Pre-Lollipop-Versionen einen Drawable mit Selektor in einem ziehbaren Ordner mit demselben Namen.

%Vor%     
Bob 28.04.2016, 12:54
quelle
3

Es klingt wirklich so, als ob Sie eine anklickbare Textansicht anstelle einer Schaltfläche verwenden möchten. TextView hat standardmäßig keinen Schatten und scharfe Ecken und Sie können einen Klick-Listener anhängen. Denken Sie daran, Button ist nur ein schicker TextView mit vielen visuellen Add-ons, und es klingt wie Sie eine Menge davon entfernen möchten.

Wenn Sie die Welligkeit des TextView beibehalten und Ihren eigenen Hintergrund definieren möchten, setzen Sie android:foreground="?attr/selectableItemBackground"

BEARBEITEN: Obwohl die andere Antwort als akzeptiert markiert wurde, würde ich immer noch argumentieren, dass das OP eine TextView mit einem Klick-Listener verwenden und die Welleneffekte darauf anwenden sollte, anstatt einen Button zu verwenden. Anklickbare TextViews auf diese Art und Weise sind genau so, wie die Google I / O-App alle ihre Flat-Buttons implementiert, die die Material Design-Spezifikation erfüllen.

    
ekchang 04.05.2016 03:33
quelle
2
  

Erste Frage: Wie entfernt man den Schatten einer Schaltfläche?

Hier ist die Antwort: Fügen Sie dieses Attribut einfach Ihrer Schaltfläche hinzu

%Vor%
  

Zweite Frage: Wie man die Ecke des Knopfes scharf macht, ohne den Standard-Welleneffekt zu verlieren.   Hier ist die Antwort: Aber zuerst musst du zwei Dateien mit demselben Namen machen, aber einen für unter api 21 und einen für api & gt; 21 weil die Welligkeit nur verfügbar ist nur api & gt; 21. Jetzt zeige ich, wie man das erstellt. Lesen Sie den folgenden Text sorgfältig

Klicke mit der rechten Maustaste auf den Drawble-Ordner und wähle "Drawble Resource File" und dann "Next". Benenne den Drawble wie du willst und drücke ok. Klicke dann erneut mit der rechten Maustaste auf den Drawble-Ordner und wähle "Drawble resource file" hit next und nenne die Drawle genau so, wie du den vorherigen Drawble-Ordner genannt hast, aber dieses Mal unten siehst du einen Abschnitt namens "verfügbare Qualifier" .Gehe zu diesem Abschnitt und ganz unten siehst du "Version", klicke darauf und dann können Sie ein Pfeil-Symbol auf der rechten Seite sehen, klicken Sie dann in der "Platform API Level" 21 und dann drücken Sie OK.Und jetzt, wenn Sie Drawble-Ordner erweitern können Sie zwei Dateien Ihrer erstellten Drawble-Datei zu sehen ist unter 21 und einmal für die obere 21. Öffnen Sie die Drawble-Datei, die Sie erstellt haben und stellen Sie sicher, dass Sie "(v21)" am letzten haben.Now löschen Sie alles von dort und fügen Sie den folgenden Code

%Vor%

Und fügen Sie dieses Attribut Ihrer Schaltfläche hinzu

%Vor%

Und jetzt, wenn Sie Ihre Anwendung ausführen, können Sie sehen, dass es keinen Schatten gibt und Ihre Schaltfläche eine scharfe Ecke hat und wenn Sie klicken, wird die Welligkeit angezeigt.

Zuletzt sieht Ihre Schaltfläche ungefähr so ​​aus

%Vor%

Hoffe diese Hilfe!

    
Niyamat Ullah 28.04.2016 14:13
quelle
0

Verwenden Sie diesen Code

%Vor%     
Android Student 05.05.2016 09:50
quelle