【问题标题】:android image display as per user choice on activity根据用户对活动的选择显示android图像
【发布时间】:2013-06-26 20:41:31
【问题描述】:

我是 android 新手,想知道为什么这不起作用。如果我的 res 文件夹中有一组图像,我想根据用户的选择显示它们,这样 Mainactivity 如下所示:-

   public class Activity3 extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.drawable.img1);//here i put the image name
        }
    }

Suppose i use this code snippet
   public class Activity3 extends Activity {
        public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   if(R.id.text1=='1')
      setContentView(R.drawable.img1);
    else
      setContentView(R.drawable.img2);

}
    }

这不起作用。但我想知道为什么,android 的东西是如何真正起作用的。这在我看来在逻辑上是正确的。

【问题讨论】:

  • setContentView 方法用于设置活动的 xml 布局。您在这里所做的是试图将错误类型的资源设置为布局。如果你想成功,你应该考虑从一本好书或教程中学习 android。

标签: android android-layout android-intent android-emulator


【解决方案1】:

您不能将drawable 设置为setContentView,但您可以这样做:

setContentView(R.layout.MyLayout);     
    ImageView view = (ImageView)findViewById(R.id.myviewid);
        view.setImageResource(R.drawable.img1);

在每次点击时添加view.setImageResource(R.drawable.img1); 以更改imageView 资源。

【讨论】:

    【解决方案2】:

    如果你仔细看文档,可以看到 setContentView 方法的定义:

    public void setContentView (int layoutResID)
    

    如果你注意了,方法接收到一个layoutResId,关键字是layout,记住android使用的逻辑(视图-控制器),一个activity就是控制器布局是视图。您可以在视图中包含视觉元素,例如图像(在 android 中可以包含在 ImageView 中)。

    例如,你可以定义一个xml布局到下一个方式:

    <?xml version="1.0" encoding="utf-8"?>
    <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/selected_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
    </ImageView> 
    

    这个 xml 只包含一个 ImageView,在这个 ID 为 selected_image 的 ImageView 中,您将显示选择图像。

    在您的活动中,您需要输入下一个代码(想象一下 xml 布局调用 image_layout.xml):

    public class Activity3 extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.image_layout);
    
            //here you need find the ImageView in this layout
            ((ImageView) findViewById(R.id.selected_image).setImageResource(R.drawable.img1);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 2023-01-25
      相关资源
      最近更新 更多