【问题标题】:Android Studio - Java - Attaching an ImageView to a Layout defined in a XML fileAndroid Studio - Java - 将 ImageView 附加到 XML 文件中定义的布局
【发布时间】:2019-07-09 15:50:12
【问题描述】:

我的代码如下:

ImageView iv = new ImageView(R.layout.activity_main_menu);

我得到的错误是:

ImageView (android.content.Context) in ImageView cannot be applied to (int)

我猜想我的 Layout 想返回一个整数值,我只是想将我的 ImageView 设置为我的 Layout,谢谢你的帮助!

编辑:

编辑 2:

我设置了要显示的布局,并且在运行应用程序时可以看到它,我将背景设置为绿色,所以我确定:

setContentView(R.layout.activity_main_menu);

这是 .xml 文件:

FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#162216"
    tools:context=".main.MainMenuActivity">
</FrameLayout>

我已经定义了我的 Layout,我的 ImageView 定义了,问题是如何将它们配对在一起,以便 ImageView 成为 Layout 的一部分,从而可以显示为图片?

虽然我的 Layout 是在 .xml 文件中定义的,但我的 ImageView 是直接写入我的 .java 类中

【问题讨论】:

  • 你检查过ImageView构造函数的参数是什么吗?你想用它做什么?
  • @Hydraxia 如果您的布局文件仅包含图像视图,请检查构造函数参数?
  • R.layout.activity_main_menu 是在 R.java 类中定义的整数值。但是新的 ImageView(context);将上下文(活动的上下文)作为构造函数中的参数。
  • 在 MainLayout 中定义 ImageView(比如相对布局)。比您可以将其获取为 ImageView image = findViewById(R.id.myImage);
  • 我想知道如何在 .xml 文件中定义布局而 ImageView 不是时如何获取布局,对不起,我知道在 .xml 文件中定义它们会更容易,但我我计划在以后动态地拥有大量的 ImageView。

标签: android layout imageview parent


【解决方案1】:

即使这个解决方案是错误的,也不要那样做。

xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/frameLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#162216"
    tools:context=".main.MainMenuActivity">
</FrameLayout>

代码:

FrameLayout frameLayout = (FrameLayout) findViewById(R.id.frameLayout);
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(R.drawable.imageResource);
frameLayout.addView(imageView);

如果您想稍后有很多图像,您最可能需要将它们放在回收站视图中,您可能不需要回收它们,因此您将使用解决方案将它们添加到一个线性布局。

注意:FrameLayout 只能有 1 个孩子

【讨论】:

    【解决方案2】:

    在你的 onCreate 方法中设置 R.layout.activity_main_menu) 像这样:

    setContentView(R.layout.activity_main_menu);

    然后从 xml 设置你的 imageView ID

    ImageView iv = new ImageView(this);

    【讨论】:

    • 对不起,如果我误解了你,你的意思是我的 ImageView 的构造函数应该是它自己?如果您知道我的意思,我希望它附加到布局中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2022-08-04
    • 2022-06-11
    相关资源
    最近更新 更多