2017-10-11 90 views
-1

我必須做出像這個 - image圖層列表中正確

形狀這樣做,我這樣寫這個 -

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> 

和這樣的矩形 -

<?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> 

我一起將它們放置在一個XML文件中像這個 -

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> 

當我使用背景的.xml在我的代碼設置的背景下,是沒有得到正確顯示整幅圖像,只有矩形部分即將到來。這裏有什麼問題?

<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

您的圖像鏈接似乎不可用。 – CoXier

+0

現在有空嗎?@LiJianixn – Aayushi

+0

Http錯誤:503 – CoXier

回答

0

看來你對測試設備,其API低於26.In其實你的代碼,我不知道該如何解釋,爲什麼LayerDrawable行爲不同以下API 26.但是我有一個解決方案。

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

「1」 是指指數1,在你的代碼 「1」 是指@drawable/blue_rectangle,你可以手動設置填充。

請注意,您應該將dp轉換爲像素。

+0

whyis這裏需要java代碼嗎?不能通過使用drawable來完成嗎? – Aayushi

+0

'layer-list.xml'將被轉換爲'LayerDrawable'。你有什麼意思'不能通過使用drawable來完成?' – CoXier

+0

有一種通過drawable設置pading jsut的方法。所以,我認爲它可以這樣做 – Aayushi