2017-10-11 21 views
-1

je dois faire une forme comme this- imageliste des calques dans les images Android affichent pas correctement

Pour ce faire, j'ai le code écrit comme this-

triangle.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
     <rotate 
      android:fromDegrees="45" 
      android:pivotX="-45%" 
      android:pivotY="97%" 
      android:toDegrees="45" > 
      <shape android:shape="rectangle" > 
       <solid android:color="@color/nypd_blue" /> 
      </shape> 
     </rotate> 
    </item> 

</layer-list> 

et rectangle comme ceci-

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview_background_shape"> 
      <stroke android:width="2dp" android:color="@color/nypd_blue" /> 
      <padding android:left="2dp" 
       android:top="2dp" 
       android:right="2dp" 
       android:bottom="2dp" /> 

      <solid android:color="@color/nypd_blue" /> 
     </shape> 
    </item> 
</layer-list> 

Ensemble Je suis en les plaçant dans un fichier xml comme this-

background.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/blue_triangle" android:id="@+id/triangle" android:gravity="top" 
     android:top="0dp" android:bottom="0dp" android:left="0dp" android:right="0dp" 
     /> 
    <item android:drawable="@drawable/blue_rectangle" android:gravity="bottom" 
     android:height="10dp" 
     /> 
</layer-list> 

Quand je me sers .xml de fond dans mon code pour définir l'arrière-plan, l'image entière ne s'affiche pas correctement et que le rectangle une partie arrive. Quel est le problème ici?

<LinearLayout android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
/> 
<RelativeLayout android:id="@+id/hours_spent_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="@dimen/width_1dp" 
     android:background="@drawable/background"> 
+0

Votre lien d'image ne semble pas disponible. – CoXier

+0

est-il disponible maintenant? @LiJianixn – Aayushi

+0

Http error: 503 – CoXier

Répondre

0

Il vous semble tester votre code sur l'appareil dont l'API est en dessous 26.In fait, je ne sais pas comment expliquer pourquoi LayerDrawable se comporte différemment ci-dessous API 26. Mais j'ai une solution.

RelativeLayout relativeLayout;// your layout 
LayerDrawable drawable = (LayerDrawable) relativeLayout.getBackground(); 
drawable.setLayerInset(1, padding, padding, padding, padding); 

"1" signifie indice 1, dans votre code "1" signifie @drawable/blue_rectangle et vous pouvez définir le remplissage manuellement.

Notez que vous devez convertir dp en pixel.

+0

pourquoi le code java nécessaire ici? ne peut-il pas être fait en utilisant simplement le drawable? – Aayushi

+0

'layer-list.xml' sera converti en' LayerDrawable'. Quel est votre sens 'ne peut-il être fait en utilisant simplement le drawable?' – CoXier

+0

il y a un moyen de régler jsut par drawable. Donc, j'ai pensé qu'il peut être fait comme ça aussi – Aayushi