我有一个带有9补丁背景图片的Android小部件。
而不是使用主要布局" android:background"属性我使用RelativeLayout与ImageView设置在其他元素后面。结果还可以。
现在我希望用户能够为小部件设置外观,特别是选择背景颜色(使用颜色选择器)。
我会找到一种在运行时构建新9补丁的方法,但我首先要确保能够更改背景9补丁。
所以我手动构建了一个不同的9补丁PNG,然后我用aapt.exe编译它然后把它放在手机上。 然后我尝试使用RemoteViews.setImageViewUri()更改9补丁。结果是应用了新的PNG,但没有应用9补丁,而是被拉伸。
详情如下:
小部件布局:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/widgetBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/rounded_black_70"/>
<LinearLayout
...
</LinearLayout>
</RelativeLayout>
描述9补丁文件和结果的图片: image
我用来设置新9补丁的代码行:
remoteViews.setImageViewUri(R.id.widgetBackground, Uri.parse("/sdcard/DCIM/test.9.png"));
我的问题:您是否有人曾使用远程视图设法应用新的(在运行时生成)9补丁图片?
我已经尝试过了:
我尝试使用drawable和RemoteViews.setImageViewBitmap或setImageViewResource
我阅读了以下帖子,其中说&#34;我需要将其存储为已编译的九个补丁。这样我就可以直接将它分配给ImageView(使用它的URI)。因为它是在RemoteViews&#34;上设置运行时生成九个补丁的唯一方法。看来这家伙知道该怎么做。 Saving run-time generated NinePatch on external memory
所以我学习了编译和未编译的9-patch。
我尝试使用名为&#34; .9.png&#34;的文件或只是&#34; .png&#34;
谢谢
答案 0 :(得分:0)
让我回答我自己的问题。