0

Ich versuche, einem LinearLayout (in einem Fragment) Elevation hinzuzufügen. Auf meinem Gerät mit Android Nougat ist alles in Ordnung, aber auf Marshmellow oder Lollipop gibt es überhaupt keine Schatten. Was könnte das Problem sein?Programmatisch hinzugefügte Elevation wird nicht auf Lollipop- oder Marshmallow-Geräten angezeigt

LinearLayout ll = (LinearLayout) getActivity().findViewById(R.id.main_ll_newproducts); 
    ll.setBackgroundColor(Color.rgb(50,50,50)); 

     LinearLayout llProduct = new LinearLayout(getContext()); 
     llProduct.setBackgroundResource(R.drawable.product_selection_background); 
     llProduct.setOrientation(LinearLayout.HORIZONTAL); 
     llProduct.setPadding(20,0,0,0); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      llProduct.setElevation(8); 
     } 
     llProduct.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      } 
     }); 

     //Layoutparams 
     LayoutParams layParam = (LayoutParams) ll.getLayoutParams(); 
     layParam.setMargins(10,10,10,30); 
     layParam.width = LayoutParams.MATCH_PARENT; 
     layParam.height = LayoutParams.WRAP_CONTENT; 
     // /Layoutparams 

     llProduct.setLayoutParams(layParam); 

danach füge ich noch ein paar Ansichten wie Textviews und einen Imageview und dann füge ich dieses Linearlayout an ihrer Mutter.

ll.addView(llProduct); 

Antwort

0

Eigentlich war das LayoutParams das Problem. Ich ersetzte es dadurch:

//Layoutparams 
     LinearLayout.LayoutParams layParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); 
     layParam.setMargins(20,10,20,30); 
     layParam.width = FrameLayout.LayoutParams.MATCH_PARENT; 
     layParam.height = FrameLayout.LayoutParams.WRAP_CONTENT; 
     llProduct.setLayoutParams(layParam); 
     // /Layoutparams 
Verwandte Themen