android– 如何在布局上为ImageView对象的新副本充气?

android– 如何在布局上为ImageView对象的新副本充气?,第1张

概述我要做的是创建ImageView对象R.id.tile的N(在本例中为9)副本,将它们中的每一个放置在布局上的不同坐标上,并为每个坐标提供其自己的唯一标识符.board_layout.xml:<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apkes/and

我要做的是创建ImageVIEw对象R.ID.tile的N(在本例中为9)副本,将它们中的每一个放置在布局上的不同坐标上,并为每个坐标提供其自己的唯一标识符.

board_layout.xml:

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:background="@drawable/backgroundcolor"    androID:orIEntation="vertical" >    <linearLayout        androID:ID="@+ID/topbar"        ... >        <Imagebutton            androID:ID="@+ID/imagebutton"            ... />    </linearLayout>    <relativeLayout        androID:ID="@+ID/board"        androID:layout_wIDth="match_parent"        androID:layout_height="345dp"        androID:layout_centerVertical="true"        androID:background="@drawable/wwfboard" >        <vIEw             androID:ID="@+ID/myVIEw"            androID:layout_wIDth="fill_parent"            androID:layout_height="fill_parent" />        <ImageVIEw            androID:ID="@+ID/tile"            androID:layout_wIDth="21dp"            androID:layout_height="21dp"            androID:src="@drawable/tile" />    </relativeLayout></relativeLayout>

BoardLayout.class:

@OverrIDeprotected voID onCreate(Bundle savedInstance){   super.onCreate(savedInstance);    setContentVIEw(R.layout.board_layout);    LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    VIEw[] tiles = new ImageVIEw[9];    entire_layout = (relativeLayout)findVIEwByID(R.layout.board_layout);    for(int i = 0; i<tiles.length; i++){        tiles[i] = (ImageVIEw) inflater.inflate(R.layout.board_layout, null);        tiles[i].setID(1000+i);        params = new relativeLayout.LayoutParams(-1, 345);        params.leftmargin = 32*2*i;        params.topmargin = 34*2*i;        entire_layout.addVIEw(tiles[i]);    }    ...

但是,我一直在最后一行得到“Source not found”错误:layout.addVIEw(tiles [i]); ..
有什么想法吗?
(旁边问题:如果你正在使用坐标,那么relativeLayout比absoluteLayout好吗?)

解决方法:

编辑:

首先使用一个具有您喜欢的属性的ImageVIEw创建布局

例:

在res / layout / singleimage.xml中创建文件

<?xml version="1.0" enCoding="utf-8"?><ImageVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID"           androID:ID="@+ID/image2"           androID:layout_wIDth="match_parent"           androID:layout_height="match_parent"           androID:src="@drawable/ic_launcher"           androID:contentDescription="Sample"/>

然后给ImageVIEw充气以获得它的副本

VIEw[] tiles = new ImageVIEw[9];// get reference to LayoutInflaterLayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);for(int i = 0; i<tiles.length; i++) {    //Creating copy of imagevIEw by inflating it    ImageVIEw image = (ImageVIEw) inflater.inflate(R.layout.singleimage, null);    tiles[i] = image;    tiles[i].setID(i);    relativeLayout.LayoutParams params = new relativeLayout.LayoutParams(-1, 345);    params.leftmargin = 32*2*3;    params.topmargin = 34*2*3;    layout.addVIEw(tiles[i]);}

你在这里设置了ID值

tiles[i].setID(i);  

但是你(错误地)试图从你的其他资源(你想要’克隆’)获得它:

layout.addVIEw(tiles[i] = (ImageVIEw) findVIEwByID(R.ID.tile)); // INCORRECT

相反,如上所述手动设置ID,然后:

layout.addVIEw(tiles[i]);

并且无需调用findVIEwByID()

总结

以上是内存溢出为你收集整理的android – 如何在布局上为ImageView对象的新副本充气?全部内容,希望文章能够帮你解决android – 如何在布局上为ImageView对象的新副本充气?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存