似乎在父布局上设置 layoutMode =“opticalBounds”将禁用9-Patch内容区域。下面的截图是一个简单的TextView:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="20dp"
android:paddingTop="20dp">
<TextView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@drawable/shadow_with_stroke_gray"
android:text="lorem ipsum etc"
android:padding="0dp"
/>
</FrameLayout>
而左边的FrameLayout将 layoutMode 设置为默认值( clipBounds ),将右侧设置为 opticalBounds 。
9-patch PNG也附在这篇文章上。
此案例的正确行为是什么?
正在使用9补丁图片:
根据评论员的建议更新了9-Patch图片:
使用SDL中的9-patch图像(samples / android-20 / legacy / ApiDemos / res / drawable-mdpi / btn_default_normal.9.png),结果如下所示:
SDK文件(由我添加的光学边界的红色标记):
问题仍然存在,内容区域没有被考虑在内,文字不应该划过边界。
答案 0 :(得分:2)
删除了android:padding="0dp"
,填充正确。