ImageButton 可绘制背景未居中和裁剪
ImageButton drawable background not centered and cropped
我有这个 ImageButton
<ImageButton
android:id="@+id/imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/crimson_round_button"
android:src="@drawable/play_white"/>
其中 crimson_round_button.xml 可绘制对象是
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="oval">
<solid android:color="@color/hibiscus"/>
<stroke
android:width="4dp"
android:color="@color/crimson"/>
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="@color/crimson"/>
<stroke
android:width="4dp"
android:color="@color/crimson"/>
</shape>
</item>
</selector>
并且 play_white.png 可绘制对象仅表示按钮中的白色播放图标。
我的最终结果是这个
您可以看到内部图标没有居中,您可以注意到右侧和底部边框被裁剪了一点。
原因是应用的背景不适合 ImageButton,正如您在这张图片中看到的那样,我在 Android Studio 预览
中选择了 ImageButton
知道为什么会这样吗?
编辑:
好的,让我们试着忘掉白色箭头。
这是我的图像按钮(及其容器)的新代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageButton
android:id="@+id/save_record_dialog_play_imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@drawable/crimson_round_button"/>
</FrameLayout>
如您所见,设置为 ImageButton 背景的圆不再是圆,它在左侧和底部被裁剪
并将 ImageButton 的高度设置为 4dp,裁剪后的边框更加明显
我认为问题在于三角形播放按钮看起来不居中。
我用我自己的三角形按钮试过你的布局:
看起来太靠右了,但是如果我们像这样画三角形按钮的边界(抱歉我的绘画技巧):
图标本身似乎居中。
一种解决方案是调整左内边距,使其看起来更好:
<ImageButton
android:id="@+id/imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/crimson_round_button"
android:src="@drawable/play_white"
android:paddingLeft="3dp"/>
这给出了这个:
关于你问题的第二部分,你有没有观察到设计选项卡上的裁剪?在模拟器中?在设备上?对我来说,我在布局设计选项卡上看到了这个问题:
但不是在设备上(这是来自屏幕截图):
我有这个 ImageButton
<ImageButton
android:id="@+id/imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/crimson_round_button"
android:src="@drawable/play_white"/>
其中 crimson_round_button.xml 可绘制对象是
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="oval">
<solid android:color="@color/hibiscus"/>
<stroke
android:width="4dp"
android:color="@color/crimson"/>
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="@color/crimson"/>
<stroke
android:width="4dp"
android:color="@color/crimson"/>
</shape>
</item>
</selector>
并且 play_white.png 可绘制对象仅表示按钮中的白色播放图标。
我的最终结果是这个
您可以看到内部图标没有居中,您可以注意到右侧和底部边框被裁剪了一点。
原因是应用的背景不适合 ImageButton,正如您在这张图片中看到的那样,我在 Android Studio 预览
中选择了 ImageButton知道为什么会这样吗?
编辑:
好的,让我们试着忘掉白色箭头。 这是我的图像按钮(及其容器)的新代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageButton
android:id="@+id/save_record_dialog_play_imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@drawable/crimson_round_button"/>
</FrameLayout>
如您所见,设置为 ImageButton 背景的圆不再是圆,它在左侧和底部被裁剪
并将 ImageButton 的高度设置为 4dp,裁剪后的边框更加明显
我认为问题在于三角形播放按钮看起来不居中。
我用我自己的三角形按钮试过你的布局:
看起来太靠右了,但是如果我们像这样画三角形按钮的边界(抱歉我的绘画技巧):
图标本身似乎居中。
一种解决方案是调整左内边距,使其看起来更好:
<ImageButton
android:id="@+id/imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/crimson_round_button"
android:src="@drawable/play_white"
android:paddingLeft="3dp"/>
这给出了这个:
关于你问题的第二部分,你有没有观察到设计选项卡上的裁剪?在模拟器中?在设备上?对我来说,我在布局设计选项卡上看到了这个问题:
但不是在设备上(这是来自屏幕截图):