2
我想要做的是創建N(在這種情況下爲9)ImageView對象R.id.tile
的副本,將它們中的每一個放置在佈局上的不同座標處,並給出每個它自己的唯一標識符。如何在佈局上充填ImageView對象的新副本?
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]);
}
...
不過,我不斷收到「未找到源」 的最後一行錯誤: layout.addView(tiles[i]);
..
任何想法爲什麼?
(方的問題:是的RelativeLayout比AbsoluteLayout更好,如果你使用的座標工作?)
同樣的結果......在'layout.addView停止(瓷磚[我]);'線,並說**來源未找到。** – LanguidLegend
@LanguidLegend我知道,你會得到例外,指定的孩子已經是父母。因此,已經給出了一個過程如何做到這一點..做到完全一樣..它的工作肯定..檢查我的編輯 – Pragnani
所以將R.layout.singleimage是包含ImageView的XML文件的名稱,或只是最內層XML佈局文件中的父層?如果有多個父層,那麼這對java代碼有什麼影響嗎? BTW仍然給我源錯誤..我已經更新我的代碼到當前。 – LanguidLegend