Android-Erhebung nicht zeigt Schatten auf den Button
Nicht bekommen können, Taste, Schatten zu zeigen.
Abgespeckte mein code, um das minimal-Beispiel:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/main_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp">
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:elevation="10dp"
android:translationZ="10dp"
android:background="@android:color/holo_green_light"
android:text="BUTTON"/>
</RelativeLayout>
</LinearLayout>
</ScrollView>
Muss ich, dass der layout-Struktur.
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Schatten ist sichtbar in Android Studio designer:
Aber nicht gezeigt-Laufzeit:
Getestet auf:
- Genymotion Google Nexus 5X - Marshmallow-6.0.0 - API-23
- Genymotion Google Nexus 5 - Lollipop-5.1.0 - API-22
- Genymotion Samsung Galaxy S2 - Jelly Bean 4.1.1 - API 16
- Hardware-Gerät, Samsung Galaxy S5 mini - KitKat 4.4.2 - API-19
Alle gleiche Ergebnis.
Ich bin mit:
- Android Studio 2.1.2
- minSdkVersion 16
- targetSdkVersion 24
Bitte erstellen Sie ein neues Projekt in Android Studio, Leer-Aktivität Vorlage, dann kopieren und fügen Sie den code in activity_main.xml
und MainActivity.java
so können Sie testen und mir sagen.
Direkt fügen Sie Ihre Schaltfläche, um ScrollView und sehen, ob seine zeigen den Schatten oder nicht. Es kann wegen der zu Linearen und RelativeLayout die Verpackung . Überprüfen Sie diesen link für Referenz stackoverflow.com/questions/35289356/...
Es gibt keine solche Eigenschaft
ja Du hast Recht und auch im Material-design
Yep, es war ein Fehler im Beispiel-code, keine layout_topLeft. Bearbeitet. Noch Auschecken. Danke!
Es gibt keine solche Eigenschaft
layout_topLeft
für alle View
..!!ja Du hast Recht und auch im Material-design
android:elevation="2dp"
und android:translationZ="2dp"
wird nur funktionieren, wenn Sie android:stateListAnimator="@null"
sonst ist es zu nehmen Eigenschaft Schadensersatzansprüche wegen Nichterfüllung gem.Yep, es war ein Fehler im Beispiel-code, keine layout_topLeft. Bearbeitet. Noch Auschecken. Danke!
InformationsquelleAutor Ramiro | 2016-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
kopiert von hier
fügen Sie einfach diese Eigenschaft, um Ihre
Button
. Sie können Ihre eigenen mit derandroid:stateListAnimator
Eigenschaft.vollständige code :
UpDate :
für das Verständnis ich es 10dp..
xml-code :
ja habe ich probiert..
siehe mein update..
es funktioniert! Aber es funktioniert in jedem emulator mit API-level 21 oder höher. Es funktioniert nicht mit API 20 oder niedriger. Ich Eröffne dann noch eine Frage zu einer alternative für den unteren apis. Danke!
InformationsquelleAutor Ironman
Ich habe das Spiel mit Schatten auf Lollipop für etwas und das ist, was ich gefunden habe:
Scheint es, dass ein Elternteil ViewGroup ' s cutoff-Grenzen der Schatten seine Kinder für einige Grund-und Schatten-set mit
android:elevation
sind cutoff von der Blick auf die Grenzen, nicht die Grenzen erweitert durch die Marge;Den richtigen Weg ein Kind zu bekommen-Ansicht, um zu zeigen, Schatten zu setzen, ist die Polsterung auf die übergeordneten und set
android:clipToPadding=false
auf diesem Elternteil.Hier ist mein Vorschlag zu Ihnen basierend auf was ich weiß:
Setzen Sie Ihre top-level RelativeLayout Polsterung Höhe der Margen, die Sie sich gesetzt haben, auf die relative layout, das Sie wollen, um zu zeigen, Schatten;
Set
android:clipToPadding=false
auf der gleichen RelativeLayout;Entfernen Sie die Marge aus dem RelativeLayout das hat auch die elevation eingestellt.
Am Ende des Tages, die top-level-relative layout sollte wie folgt Aussehen:
Den Innenraum relative layout sollte wie folgt Aussehen:
InformationsquelleAutor Lovekush Vishwakarma
War in meinem Fall ist, probieren Sie es
app:elevation
app: Präfix steht nicht in-Taste
Oh mein Gott.. Sie haben zum hinzufügen von namespace-ersten. Dont downvote, wenn Sie Sie nicht kennen. Sagen Sie mir noch weitere Spezifikation. Ich werde es erklären.
Auch wenn Sie add app-namespace, Standard
stateListAnimator
überschreibtelevation
in beiden namespaces. Ich schrieb den vorherigen Kommentar in EileInformationsquelleAutor Khan