私はチェスボードをコーディングしています。レイアウトには、いくつかの「マージされた」レイアウトが含まれています。アクティビティコードから「マージされた」コンポーネントにアクセスして、プロパティ(imageView background_color、imageView image path ...)の一部を変更したいだけです。Android API 3:結合されたレイアウトからコンポーネントにアクセスする
編集:たとえば、行ID(R.id.row_1)を渡して、forループを使用してこの行IDからすべてのコンポーネントを初期化します.8個のセルにそれぞれ異なる背景色が与えられます。
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
<ImageView
android:id="@+id/b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
<ImageView
android:id="@+id/c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
<ImageView
android:id="@+id/d"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
<ImageView
android:id="@+id/e"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
<ImageView
android:id="@+id/f"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
<ImageView
android:id="@+id/g"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
<ImageView
android:id="@+id/h"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/cell_dimension"
android:minHeight="@dimen/cell_dimension"
android:maxWidth="@dimen/cell_dimension"
android:maxHeight="@dimen/cell_dimension"
/>
</TableRow>
:ここ
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initializeComponents(R.id.row_2);
}
public initializeComponents(int id){
/* inflates the given layout child components
* and set their properties
*/
}
は私のmain.xmlです。ここ
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<include layout="@layout/board"/>
</LinearLayout>
は私board.xmlはここに私のboard_line.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<include android:id="@+id/row_8" layout="@layout/board_line"/>
<include android:id="@+id/row_7" layout="@layout/board_line"/>
<include android:id="@+id/row_6" layout="@layout/board_line"/>
<include android:id="@+id/row_5" layout="@layout/board_line"/>
<include android:id="@+id/row_4" layout="@layout/board_line"/>
<include android:id="@+id/row_3" layout="@layout/board_line"/>
<include android:id="@+id/row_2" layout="@layout/board_line"/>
<include android:id="@+id/row_1" layout="@layout/board_line"/>
</TableLayout>
です
ご協力いただきありがとうございます。
あなたはこのようにそれを試みることができる: 'findViewById(R.id。 row_3).findViewById(R.id.b) ' – zapl
ありがとうございます。しかし、各子コンポーネントを手動で記述するのではなく、for/whileループを使って、行のすべてのコンポーネント(R.id.row_2)をどのように初期化できるかを知っていますか?前もって感謝します。 – loloof64