5

我认为这本书的代码不正确。在我家试过,效果很好。发现我的日食实际上被打破了。不得不删除并重新安装eclipse。

这是我在这里的第一篇文章,所以如果我不遵守某些规则,请告诉我。我试图搜索并发现一些具有相同错误的帖子,但它们处理的是字符串。我正在关注面向绝对初学者的 Android 应用程序(第 2 版),在第 179 页上,您将 button1.xml 带入了您的 res/drawable。当我进入 layout/activity_main.xml 并输入

<ImageButton 
    android:id="@+id/button_one"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/button1"
    android:contentDescription="@string/app_name"/>

它错误地指出 android:src “错误:错误:找不到与给定名称匹配的资源(在 'src' 处,值为 '@drawable/button1')。”

现在有一些事情让我感到困惑,我正在使用 eclipse 并且我有 4 个可绘制文件夹(drawable-hdpi、drawable-ldpi、drawable-mdpi 和 drawable-xhdpi),我在每个文件夹上都去了 New>File 4 个可绘制文件夹并导入了具有各自分辨率的 button1_focused.png、button1_pressed.png 和 button1_normal.png。我还将 button1.xml 放在每个文件夹中。

button1.xml如下

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
            android:drawable="@drawable/button1_pressed" />
    <item android:state_focused="true"
            android:drawable="@drawable/button1_focused" />
    <item android:drawable="@drawable/button1_normal" />
</selector>

我尝试了 android:background 而不是 android:src 并且也出现了错误。我看到它的错误表明 src (或背景)没有文件。只是不知道该放什么。

Java代码包com.example.ui_designs;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

ImageButton imageButton = new ImageButton(context);
imageButton.setImageResource(R.drawable.button1);

}

截图链接:http ://s7.postimage.org/3v4tu9ifv/UI_Designs.png

4

7 回答 7

2

我认为这本书的代码不正确。在我家试过,效果很好。发现我的日食实际上被打破了。不得不删除并重新安装eclipse。

对于我可能造成的任何不便,我深表歉意,并感谢社区的帮助。

于 2013-01-31T18:26:08.823 回答
1

根据您的项目资源管理器的屏幕截图...您button1.xmldrawable-hdpi文件夹中没有。

如果您希望使用所有相同的图像尺寸,密度无关紧要,您可以创建一个新文件夹,然后drawable将其处理所有屏幕密度。

于 2013-01-30T21:12:48.353 回答
1

我有一个类似的问题,因为

1:我没有在@/drawable 之后添加正确的图像名称

2:我也没有在drawable-ldpi文件夹中添加图片。

<ImageView
    android:id="@+id/imageDisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/nasalogo">
</ImageView>

在我的情况下,我需要在我的 drawable-ldpi 文件夹中添加名为nasiogo 的图像

这也是我的 values/string.xml 的样子

<?xml version="1.0" encoding="utf-8"?>

PCWorldRssReaderActivity

<string name="text_image_title">Decorating the Sky</string>

<string name="text_image_date">Mon, 19 Aug 2013 00:00:00 EST </string>
<string name="text_image">nasalogo</string>

<string name="text_image_description"> This is mosaic image</string>

之后

于 2013-08-20T01:02:11.107 回答
0

您可以尝试在您的 java 代码中执行此操作吗?

ImageButton imageButton = new ImageButton(context);
imageButton.setImageResource(R.drawable.button1);
于 2013-01-30T20:30:24.467 回答
0

我在对项目进行逆向工程时遇到了这个问题,“错误:错误:找不到与给定名称匹配的资源(在'背景',值为'@color/default_bg')。”

解决方案:将以下属性添加到“/project_/res/values/colors.xml”

<color name="default_bg">#aa000000</color>

最后它看起来像这样:

<resources>
  <color name="black_overlay">#66000000</color>
   <color name="default_bg">#aa000000</color>
</resources>
于 2015-02-24T08:18:40.017 回答
0

还有另一种解决方案。将所有图像文件夹(具有相同名称)复制到所有 4 个可绘制文件夹中。然后执行 android:src="@drawable/filename" 它对我有用!

于 2015-03-05T13:57:08.280 回答
0

我在 AndroidStudio 中发生过这种情况,结果我的文件被命名为 .png 但却是 jpeg。

于 2016-09-16T02:10:11.497 回答