4つの画像(同じサイズ、画面に合わせて縮小することを目的)を表示し、画面全体を占め、画面を四分円(高さ2x2グリッド)に分割する画面(縦向きモード)を作成しようとしています。これはメインメニュータイプのアクティビティとして機能し、ユーザーを別のアクティビティに誘導するために、各画像をクリック可能にする必要があります。
LinerLayout内でGridViewを使用しようとしましたが(GoogleのGridViewチュートリアルから多くを使用)、画像をすべての縮尺で適切に拡大して画面全体に表示することができません。画像の周囲に余分な余白があり、画面全体がスクロールします。
また、TableLayoutを使用して、2つの行のそれぞれに2つの画像を配置してみました。視覚的には、それは完璧に機能しました。残念ながら、これを使用すると、アクティビティコードでTableLayoutのImageViewアイテムを参照できないようです(findViewByIdは常にnullを返します)。
TableLayoutは実際には「正しいこと」ではないように感じますが、他の人の意見を聞きたいと思います。いずれにせよ、私の希望する機能を達成するために何をすべきですか?
ありがとう。
編集1.1:相対的なレイアウトは、物事を並べるためにはるかにうまく機能します。これで、findViewByIdが常にnullを返すという問題が残ります。これまでの私のコードは次のとおりです。
<?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="@color/homescreen_bgcolor"
>
<ImageView id="@+id/one"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:src="@drawable/item1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView id="@+id/two"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:src="@drawable/item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView id="@+id/three"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:src="@drawable/item3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView id="@+id/four"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:src="@drawable/item4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
public class HomeScreenActivity2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homescreen2);
ImageView imageView = (ImageView) findViewById(R.id.one);
imageView.setClickable(true);
imageView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.i("Test", "test");
}
});
}
}