What I am trying to do is create N (in this case 9) copies of the ImageView object R.id.tile
, place each of them at different coordinates on the layout, and give each its own unique identifier.
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 class="languid.legend.xsolver.DrawView"
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:
@Override
protected 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]);
}
...
However, I keep getting "Source not found" errors on the last line: layout.addView(tiles[i]);
..
Any ideas why?
(Side question: is RelativeLayout better than AbsoluteLayout if you're working with coordinates?)
Edit:
First create a layout with one ImageView with the properties you like
Example:
create file in res/layout/singleimage.xml
And then inflate the
ImageView
to get the copies of it like thisYou have set
id
toi
value hereBut you are (incorrectly) trying to get it from your other resource (the one you wanted to 'clone'):
Instead, set the
id
manually as above, and then:And there is no need to call
findViewById()