为此,我编写了这样的代码 -
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 :(得分:0)
您似乎在API低于26的设备上测试您的代码。事实上,我不知道如何解释为什么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转换为像素。