在阅读了2本关于Android编程的书籍之后,我试图移植一个iOS Word游戏应用程序:
我希望有2个类继承自View
- SmallTile.java和BigTile.java。
这两个课程应由ImageView
(id:"图像")和2 TextViews
组成(ID:"字母"和"值"。)
它们之间的区别在于BigTile将是可拖动的,它的"图像"有一个影子。
我已将图形资源放入目录res/drawable-mdpi,我试图从布局文件res/layout/small_tile.xml和res/layout/big_tile.xml中引用它们:
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/small_tile.png" >
</ImageView>
但是我收到了错误
找不到与给定名称匹配的资源 (在&#39; src&#39;有价值&#39; @ drawable / small_tile.png&#39;)
你可以在Eclipse-screenshot(这里是fullscreen)中看到:
我也为我的资产尝试了其他路径 - 例如res/drawables
和src/assets
。
另一个问题:如何从View
?
目前res/layout/small_tile.xml中只有ImageView
,但我也希望在那里添加两个TextView
(对于字母及其数值) - 然后从SmallTile.java加载它。
从编程手册中我知道如何从Activity
或Fragment
加载布局 - 在setContentView(R.layout.activity_main);
中调用onCreate
- 但在{{{{}}中调用的位置和内容1}} class?
答案 0 :(得分:3)
引用Drawable时,只能通过文件名引用它们。你应该省略扩展名。
例如,您发布的ImageView在XML中应如下所示:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/small_tile" >
请注意从android:src="@drawable/small_tile.png"
到android:src="@drawable/small_tile"
要在View中使用自定义布局,您需要创建LayoutInflater
并致电inflate(R.id.my_layout, this);
。例如:
public SmallTile(Context context) {
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(R.layout.my_view_layout, this);
}