1

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");
      }
    });
  }
}
4

2 に答える 2

3

これは、RelativeLayoutだけを使用して画面全体をカバーする2X2グリッドを実現する方法を示すサンプルレイアウトです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<View
    android:id="@+id/centerVerticalShim"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_centerVertical="true"
    android:visibility="invisible" />

<View
    android:id="@+id/centerHorizontalShim"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:visibility="invisible" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/centerVerticalShim"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/centerHorizontalShim"
    android:background="#42A5F5"
    android:gravity="center"
    android:text="@string/one"
    android:textColor="#FFFFFF" >
</TextView>

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/centerVerticalShim"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/centerHorizontalShim"
    android:background="#EF5350"
    android:gravity="center"
    android:text="@string/two"
    android:textColor="#FFFFFF" >
</TextView>

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/centerVerticalShim"
    android:layout_toLeftOf="@+id/centerHorizontalShim"
    android:background="#66BB6A"
    android:gravity="center"
    android:text="@string/three"
    android:textColor="#FFFFFF" >
</TextView>

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/centerVerticalShim"
    android:layout_toRightOf="@+id/centerHorizontalShim"
    android:background="#5C6BC0"
    android:gravity="center"
    android:text="@string/four"
    android:textColor="#FFFFFF" >
</TextView></RelativeLayout>

上記のレイアウトの結果は次のようになります。

于 2015-06-11T23:56:52.147 に答える
0

TableLayoutでうまくいくと思いますが、RelativeLayoutも試してみることをお勧めします。基本的に、次の組み合わせを使用して、画像を4つの象限に固定できます。

android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"`

あなたの画像に。

私は自分のアプリで同様のことをしています。ホームページに対応するアクティビティを起動できる複数のボタンがあります。RelativeLayoutは正常に機能し、ネストされたLayoutオブジェクトを回避します。これにより、レンダリングおよびレイアウト手順中のパフォーマンスが低下する可能性があります(手に負えなくなった場合)。

于 2010-11-03T17:37:51.460 に答える