为了清晰起见,已修改并编辑了内容。
相关参考资料:
Android ADT version 22, R.java files not generated
Developing for Android in Eclipse: R.java not regenerating
Create a NinePatch/NinePatchDrawable in runtime
https://code.google.com/p/android-apktool/wiki/9PatchImages
问题:我如何以编程方式(即运行时而不是通过XML定义)获取我的九补丁到R.java的引用,以便我可以从EmployeeAdapter::getView()
调用它?
答案:
- 运行时 /以编程方式为所有查看对象设置九个补丁背景相同,执行 返回对象之前
view.setBackgroundResource(R.drawable.blue_fill)
内的Adapter::getView(...)
- 要运行时 /以编程方式为 EACH View对象设置九个补丁背景 ,在{{1}内执行
setBackgroundResource(R.drawable.blue_fill)
}}。- 请确保您的
View::onDraw(...)
的实施不会覆盖您的9.png,例如View::onDraw(Canvas c)
。- 将文件(blue_fill.9.png)放在正确
c.drawColor(color)
文件夹中(为安全起见!)- 我读过九个补丁文件需要全部小写。 (安全,做到!)
- 在XML文件中定义九个补丁的语法(我不确定如何利用它并超出此范围)但我可以向您保证我没有需要它。实际上,我强烈怀疑在创建
/res/drawable-*/
之后我的工作区问题随之而来,然后使用XML语法将其链接到我的/res/drawable-mdpi/blue_fill.xml
。这可能是错的!- 随意借用下面的工作代码。
- 因为/ res /,/ layout /的错误会导致各种问题,并且可能会出现一个软管工作空间,编辑时要小心 XML或其他非.java文件。 (1)总是检查LogCat,问题, 控制台输出,(2)查看Eclipse的错误日志,最后 (3)详尽地查看您的构建配置以查看问题是否仍然存在(仔细检查ADT v22中的新功能“项目>属性> Java 构建路径> 订购和导出“并确保您的源代码 不会影响现有的库更高的订单!
回答我的问题:
由于完全独立于ADT 22的原因,我的工作区没有 更长的再生
/res/drawable-mdpi/blue_fill.9.png
。我怀疑我搞乱了R.java
个文件夹导致了我的问题。我删除了所有文件 除了来自/res/drawable-*/
的{{1}}以试图带来我的 工作区回到处女状态。我也怀疑我进口了 错误的R库(仅您应导入的<{1}})
原始问题:
我可以将ic_launcher.png
与我定义的/res/drawable-*/
一起使用。但是,当我尝试以编程方式将同一import
com.example.yourproject.R
分配给bl_fill.9.png
内的GridView
对象时,我收到bl_fill.9.png
的编译时错误。
我花了很多天试图解决这个问题。非常感谢任何帮助!
环境:
尝试:
我在一个文件夹中尝试了所有图片。我尝试了所有文件夹中的所有图片。这些图片似乎无论在哪里都可以使用,因为View
从不打算不找到图片资源。
要揭穿它可能是一个格式不佳的* .9.png,我已经尝试了其中几个(我下载了所有这些)并且每个都在我的XML定义的GridView上工作。
/ res / layout / activity_main.xml :GridView在此处以XML格式定义,我成功分配了9个补丁EmployeeAdapter::getView(...)
bl_fill cannot be resolved or is not a field
/ res / drawable-xxhdpi / xxhdpi-9p.xml :据我所知,编译器需要此文件来转换“源”九补丁(包含1px控制像素边框)进入“编译”的九补丁(添加“块”元数据并剥离所有控制像素)。但更重要的是,我了解应该从此文件定义生成GridView
bl_fill
但是,<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="5"
android:columnWidth="90dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:background="@drawable/bl_fill"
/>
似乎正在为其他资源生成int R.java.drawable.bl_fill
引用,但只是顽固地不会为<?xml version="1.0" encoding="utf-8"?>
<nine-patch
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/bl_fill"/>
生成一个。
EmployeeAdapter.java
R.java