【发布时间】:2013-01-21 15:34:46
【问题描述】:
我正在尝试以编程方式创建九个补丁图像。我已经尝试过Griffey's 方法,但似乎无法让它发挥作用。关于如何使用该类的信息很少。我相信我错误地导入了位图。如果有人知道如何使它工作或知道更好的方法,我将非常感谢您的帮助。
我的代码:
// Dynamically create the 9patch image and apply it to a LinearLayout
LinearLayout llcode = (LinearLayout) findViewById(R.id.llcode);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.white_button);
Drawable np = NinePatchBitmapFactory.createNinePathWithCapInsets(getResources(), bitmap, 15, 15, 16, 16, null);
llcode.setBackgroundDrawable(np);
// The following code using the actual 9patch image: white_button_np.9.png
LinearLayout llxml = (LinearLayout) findViewById(R.id.llxml);
llxml.setBackgroundDrawable(getResources().getDrawable(R.drawable.white_button_np));
此屏幕截图显示了顶部的编程方法和底部使用 android 工具的典型 9patch 方法。
转换为 9patch 之前的原始图像。
【问题讨论】:
-
经过更多测试后,我发现上述错误仅发生在旧手机和所有模拟器中。我在运行 4.1.2 的 Galax Nexus 上进行了测试,Griffey 的课程运行良好。我在运行 2.3.4 的 Droid X 和所有模拟器(包括 Galaxy Nexus-4.1.2)上进行了测试,LinearLayout 有各种奇怪的颜色,如上面的屏幕截图。
-
我也被这个卡住了,你找到解决方法了吗?
-
我已经用模拟器的按钮对此进行了测试。在 API 级别 10 中它似乎被破坏了,但在 API 级别 16 中它对我来说可以正常工作。
-
大家好!在开发那个要点时,Romain Guy 告诉我,这个解决方案可能在所有版本的 Android 上都不稳定,因为 NinePatch 格式可能会发生变化。很抱歉给您带来不便,我会在要点中注明。
标签: android