图层列表中的图像在应用于按钮时不相同
image in layer list not the same when applied to a button
我正在尝试使用图层列表在 XML 中定义自定义按钮形状,以避免向项目添加更多位图。
我有这个:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:id="@+id/tester"
>
<rotate
android:pivotX="20%"
android:fromDegrees="-45"
>
<shape
android:shape="rectangle">
<solid
android:color="#000000"
>
</solid>
<size
android:height="200dp"
android:width="200dp"
>
</size>
</shape>
</rotate>
</item>
<item android:id="@+id/tester"
>
<rotate
android:pivotX="20%"
android:fromDegrees="45"
>
<shape
android:shape="rectangle">
<solid
android:color="#000000"
>
</solid>
<size
android:height="200dp"
android:width="200dp"
>
</size>
</shape>
</rotate>
</item>
<item>
<rotate
android:pivotX="90%"
android:fromDegrees="270"
>
<shape
android:shape="rectangle"
>
<solid
android:color="#000000"
>
</solid>
<size
android:width="50dp"
android:height="100dp"
>
</size>
</shape>
</rotate>
<item>
<rotate
android:pivotX="90%"
android:fromDegrees="90"
>
<shape
android:shape="rectangle"
>
<solid
android:color="#000000"
>
</solid>
<size
android:width="50dp"
android:height="100dp"
>
</size>
</shape>
</rotate>
</item>
创建此图像的方法:
我用这个将它设置为一个按钮:
<Button
android:layout_width="15dp"
android:layout_height="fill_parent"
android:id="@+id/picture_inflator"
android:layout_toLeftOf="@id/picture_fragment"
android:layout_above="@+id/button"
android:layout_below="@+id/title"
android:background="@drawable/rightButton"
android:layout_marginLeft="4dp"
/>
但是在按钮中创建的图像是这样的:
我不知道这里发生了什么。我画出了图像,想知道它是否包括超出边界的形状部分,但它看起来不像那样。在我知道为什么会这样之前我无法解决这个问题。我将不胜感激任何见解或猜测。谢谢
编辑:我知道我应该在这里使用选择器,但我现在只是在测试它。真正完成后,图像不会是磨砂黑。
我认为这是因为您使用了像 200dp 这样的大尺寸。尝试将所有内容缩小到您希望实际按钮的大小。
如果这不起作用,请查看是否可以将按钮上的 android:scaleType
属性设置为 android:scaleType="fitXY"
首先,我要感谢所有试图提供帮助的人。事实证明,YoungCoconut 走在了正确的轨道上。当我将项目的大小设置为更恰当地反映它们被缩放到图像形状的大小时,就像我实际看到的一样。所以看起来即使是被切掉的物体部分仍然被保存下来。渲染很可能根本不使用预览窗格中的图像,而是在缩放时一次构建一个对象。我已经使用 Krita 构建对象并将它们加载到项目中。
我正在尝试使用图层列表在 XML 中定义自定义按钮形状,以避免向项目添加更多位图。 我有这个:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:id="@+id/tester"
>
<rotate
android:pivotX="20%"
android:fromDegrees="-45"
>
<shape
android:shape="rectangle">
<solid
android:color="#000000"
>
</solid>
<size
android:height="200dp"
android:width="200dp"
>
</size>
</shape>
</rotate>
</item>
<item android:id="@+id/tester"
>
<rotate
android:pivotX="20%"
android:fromDegrees="45"
>
<shape
android:shape="rectangle">
<solid
android:color="#000000"
>
</solid>
<size
android:height="200dp"
android:width="200dp"
>
</size>
</shape>
</rotate>
</item>
<item>
<rotate
android:pivotX="90%"
android:fromDegrees="270"
>
<shape
android:shape="rectangle"
>
<solid
android:color="#000000"
>
</solid>
<size
android:width="50dp"
android:height="100dp"
>
</size>
</shape>
</rotate>
<item>
<rotate
android:pivotX="90%"
android:fromDegrees="90"
>
<shape
android:shape="rectangle"
>
<solid
android:color="#000000"
>
</solid>
<size
android:width="50dp"
android:height="100dp"
>
</size>
</shape>
</rotate>
</item>
创建此图像的方法:
我用这个将它设置为一个按钮:
<Button
android:layout_width="15dp"
android:layout_height="fill_parent"
android:id="@+id/picture_inflator"
android:layout_toLeftOf="@id/picture_fragment"
android:layout_above="@+id/button"
android:layout_below="@+id/title"
android:background="@drawable/rightButton"
android:layout_marginLeft="4dp"
/>
但是在按钮中创建的图像是这样的:
我不知道这里发生了什么。我画出了图像,想知道它是否包括超出边界的形状部分,但它看起来不像那样。在我知道为什么会这样之前我无法解决这个问题。我将不胜感激任何见解或猜测。谢谢
编辑:我知道我应该在这里使用选择器,但我现在只是在测试它。真正完成后,图像不会是磨砂黑。
我认为这是因为您使用了像 200dp 这样的大尺寸。尝试将所有内容缩小到您希望实际按钮的大小。
如果这不起作用,请查看是否可以将按钮上的 android:scaleType
属性设置为 android:scaleType="fitXY"
首先,我要感谢所有试图提供帮助的人。事实证明,YoungCoconut 走在了正确的轨道上。当我将项目的大小设置为更恰当地反映它们被缩放到图像形状的大小时,就像我实际看到的一样。所以看起来即使是被切掉的物体部分仍然被保存下来。渲染很可能根本不使用预览窗格中的图像,而是在缩放时一次构建一个对象。我已经使用 Krita 构建对象并将它们加载到项目中。