2017-06-19 3 views
0

Ich kann den Schatten nicht mit setElevation zeichnen. Ich möchte keine Zeichnung dafür verwenden. Hier ist der Code:
Dies ist das übergeordnete Element.
page.xml
setElevation zeigt keinen Schatten

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@color/background"> 

    <LinearLayout 
     android:id="@+id/pp_cont_new_list" 
     android:background="@color/background" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:gravity="center_horizontal" 
     android:orientation="vertical" 
     android:paddingLeft="30dp" 
     android:paddingRight="30dp" 
     android:paddingTop="5dp"> 
    </LinearLayout> 

</LinearLayout> 

Hier baue ich ein einfaches Layout.
PersonalPage.Java

final LinearLayout ROOT = (LinearLayout) findViewById(R.Id.pp_cont_new_list); 
final LinearLayout LL = new LinearLayout(context); //Container 
LL.setLayoutParams (new LinearLayout.LayoutParams(
    Generic.PARAM_MP, //eq. match_parent 
    (int) context.getResources().getDimension (R.dimen.bt_preview_list_height) 
)); 
LL.setBackgroundResource (R.drawable.background_new_list); 
LL.setElevation (5f); 
LL.setClickable (true); 

ROOT.addView(LL); 
/* 
* other code inner the container 
*/ 

dieser Hintergrund
background_new_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="10dp"/> 
      <solid android:color="@color/background"/> 
     </shape> 
    </item> 
    <item> 
     <ripple android:color="@color/textColorAlpha"/> 
    </item> 
</layer-list> 

ich eine Erklärung für meinen Fehler möchte.
Und ich würde auch gerne wissen, was für Pre-LOLLIPOP zu verwenden.

+0

Lösung für Lollipop und oben. Der richtige Weg, um eine Child-View zum Anzeigen von Shadow zu bekommen, besteht darin, Padding auf den Parent zu setzen und 'android: clipToPadding =" false "' auf diesem Parent zu setzen. Hier ist die Erklärung. https://Stackoverflow.com/a/27518160/886148 –

+0

für wick.ed: Wie Sie die Auffüllung sehen, aber auch wenn ich Ihre Lösung hinzufügen funktioniert nicht – Thorny84

+0

haben Sie Padding zum übergeordneten Layout hinzufügen? Können Sie mir den aktualisierten Code zeigen? Auch der Wert für "color/background" –

Antwort

1

Set Höhe arbeiten nur doesnot für Pre-lolipop

Sie können eine benutzerdefinierte Schaltfläche Bild erstellen, die einen Schatten hat und es als Schaltfläche gesetzt background..or jedem Hintergrund Ansicht Effekt zu geben Schatten

+0

danke aber mein Code funktioniert nicht vor LOLLIPOP und nach LOLLIPOP – Thorny84

0

Verwendung ViewCompat.setElevation(your_view(in your case LL), elevation_amount); aber für Geräte vorge Lollipop diese nicht wirken, für Pre-Lollipop Fällen könnten Sie verwenden:

android:background="@android:drawable/dialog_holo_light_frame" 
+0

habe ich das schon mal versucht aber es funktioniert nicht – Thorny84

0

Dies funktioniert, wenn Sie Dinge zu tun, in xm nichts ausmacht l. Ich habe es ausprobiert. Ich hatte keine Hintergrundfarbe, die Sie verwenden, daher verwendete ich eine andere Farbe für das Elternlayout.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#E8E8E8" 
android:paddingBottom="20dp" 
android:clipToPadding="false" 
android:translationZ="6dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="150dp" 
    android:background="@drawable/background_new_list" 
    android:clipToPadding="false" 
    android:elevation="25dp" 
    android:orientation="vertical" 
    /> 

Anmerkung: Ich bin einen höheren Höhenwert verwende es nur, um leichter zu überprüfen, ob es funktioniert hat. Sie können es an das anpassen, was Sie brauchen.