Android: 在 drawable xml, layer-list 中,为什么项目的宽度在 API 19 或更低版本中不起作用?
Android: in drawable xml, layer-list, why does the width for item not work in API 19 or lower?
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<!--width here doesn't work-->
<item
android:gravity="left"
android:width="10dp"
>
<shape
android:shape="rectangle"
>
<stroke
android:width="1dp"
android:color="@color/black"
/>
<!--<gradient-->
<!--android:startColor="#00dddddd"-->
<!--android:endColor="#40404040"-->
<!--android:angle="0"-->
<!--/>-->
</shape>
</item>
<!--width here doesn't work-->
<item
android:width="10dp"
android:gravity="right"
>
<shape
android:shape="rectangle"
>
<stroke
android:width="1dp"
android:color="@color/black"
/>
<!--<gradient-->
<!--android:startColor="#00dddddd"-->
<!--android:endColor="#40404040"-->
<!--android:angle="180"-->
<!--/>-->
</shape>
</item>
这是例子。
它适用于 Lollipop 或更高版本,但它不适用于 Kitkat,宽度被忽略,矩形将填满整个视图。
我也试过去掉第二项,只留下第一项,宽度还是被忽略了。
ImageView 使用此可绘制对象:
<!--Width will be changed dynamically-->
<ImageView
android:id="@+id/someid"
android:layout_width="100dp"
android:layout_height="@dimen/someheight"
android:src="@drawable/the_xml_above"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:clickable="false"
/>
如何解决?
好的,我会回答我自己的问题:
似乎在 Android 4.4 或更低版本上,大小节点或 width/height 属性将被忽略。
所以最好的做法是:在不同的drawablexml文件中创建不同的形状,创建一个相对布局而不是ImageView,然后将它们组合在相对布局中。
<RelativeLayout
android:id="@+id/id1"
android:layout_width="30dp"
android:layout_height="@dimen/someheight"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:clickable="false">
<ImageView
android:layout_width="3dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:src="@drawable/somesrc"/>
<ImageView
android:layout_width="3dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:rotation="180"
android:src="@drawable/somesrc"/>
</RelativeLayout>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<!--width here doesn't work-->
<item
android:gravity="left"
android:width="10dp"
>
<shape
android:shape="rectangle"
>
<stroke
android:width="1dp"
android:color="@color/black"
/>
<!--<gradient-->
<!--android:startColor="#00dddddd"-->
<!--android:endColor="#40404040"-->
<!--android:angle="0"-->
<!--/>-->
</shape>
</item>
<!--width here doesn't work-->
<item
android:width="10dp"
android:gravity="right"
>
<shape
android:shape="rectangle"
>
<stroke
android:width="1dp"
android:color="@color/black"
/>
<!--<gradient-->
<!--android:startColor="#00dddddd"-->
<!--android:endColor="#40404040"-->
<!--android:angle="180"-->
<!--/>-->
</shape>
</item>
这是例子。
它适用于 Lollipop 或更高版本,但它不适用于 Kitkat,宽度被忽略,矩形将填满整个视图。
我也试过去掉第二项,只留下第一项,宽度还是被忽略了。
ImageView 使用此可绘制对象:
<!--Width will be changed dynamically-->
<ImageView
android:id="@+id/someid"
android:layout_width="100dp"
android:layout_height="@dimen/someheight"
android:src="@drawable/the_xml_above"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:clickable="false"
/>
如何解决?
好的,我会回答我自己的问题:
似乎在 Android 4.4 或更低版本上,大小节点或 width/height 属性将被忽略。
所以最好的做法是:在不同的drawablexml文件中创建不同的形状,创建一个相对布局而不是ImageView,然后将它们组合在相对布局中。
<RelativeLayout
android:id="@+id/id1"
android:layout_width="30dp"
android:layout_height="@dimen/someheight"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:clickable="false">
<ImageView
android:layout_width="3dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:src="@drawable/somesrc"/>
<ImageView
android:layout_width="3dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:rotation="180"
android:src="@drawable/somesrc"/>
</RelativeLayout>