在哪里放置PNG文件以及如何从XML布局中的ImageView引用它们?

时间:2014-10-21 14:11:39

标签: android android-imageview android-assets

在阅读了2本关于Android编程的书籍之后,我试图移植一个iOS Word游戏应用程序:

word game screenshot

我希望有2个类继承自View - SmallTile.javaBigTile.java

这两个课程应由ImageView(id:"图像")和2 TextViews组成(ID:"字母"和"值"。)

它们之间的区别在于BigTile将是可拖动的,它的"图像"有一个影子。

我已将图形资源放入目录res/drawable-mdpi,我试图从布局文件res/layout/small_tile.xmlres/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)中看到:

eclipse screenshot

我也为我的资产尝试了其他路径 - 例如res/drawablessrc/assets

另一个问题:如何从View

加载布局文件

目前res/layout/small_tile.xml中只有ImageView,但我也希望在那里添加两个TextView(对于字母及其数值) - 然后从SmallTile.java加载它。

从编程手册中我知道如何从ActivityFragment加载布局 - 在setContentView(R.layout.activity_main);中调用onCreate - 但在{{{{}}中调用的位置和内容1}} class?

1 个答案:

答案 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);
}