九宫格 StateListDrawable 渲染问题

5
从版本12更新到SDK工具版本15之后,我的EditText和Button都显示出了畸变,如下图所示...
现在问题是:这是版本的一个错误吗?因为当我使用“Graphical Layout”选项卡预览布局时,它看起来是正常的。但是一旦编译并放置在我的手机或模拟器上,它就会失真。
以下是按钮的StateListDrawable xml。其中每个可绘制引用都是9patch。EditText也是以同样的方式完成的。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_grey_pressed" android:state_pressed="true"></item>
    <item android:drawable="@drawable/button_grey_pressed" android:state_focused="true"></item>
    <item android:drawable="@drawable/button_grey_pressed" android:state_selected="true"></item>
    <item android:drawable="@drawable/button_grey_default"></item>
</selector>

1
矩阵中一定有一个故障。 - Jack
3个回答

2

当我更新到SDK 14时,我也遇到了这个问题。

我在Window>Preferences>Android>Build中找到了解决方法,将"Build output"设置为Normal,然后执行Project>Clean>Clean All


1
仅仅清理并没有解决我的问题。但是“构建输出”步骤对我很有帮助。谢谢! - b_yng

1

我从这里复制粘贴过来,它可以正常工作:

  1. 禁用自动刷新,自动构建。
  2. 清理所有项目。
  3. 构建所有项目。
  4. 清理主项目。
  5. 构建主项目。

0

尝试将这些九宫格可拉伸图片(我猜测@drawable/button_grey_pressed指的是/drawable/button_grey_pressed.9.png)包装成XML九宫格可拉伸图片:

<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/button_grey_pressed"
    android:dither="true" />

你需要给这个 XML 文件起一个不同于 button_grey_pressed.9.png 的名称,比如说 button_grey_pressed9.xml


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接