Androidで次のことを達成するために使用するのに最適なレイアウトを探しています。これは、繰り返される行に似ています。
現在の行は、5 つのビュー コントロール (2 つの画像と 3 つのテキスト ラベル) で構成されています。
ネストされたテーブルレイアウトを使用して処理できると確信しています。しかし、これまで読んだ限りでは. 相対レイアウトを使用すると、はるかにうまく処理できます。
何か案は?投稿にサンプル レイアウトを含めていただければ幸いです。
ありがとう、
Androidで次のことを達成するために使用するのに最適なレイアウトを探しています。これは、繰り返される行に似ています。
現在の行は、5 つのビュー コントロール (2 つの画像と 3 つのテキスト ラベル) で構成されています。
ネストされたテーブルレイアウトを使用して処理できると確信しています。しかし、これまで読んだ限りでは. 相対レイアウトを使用すると、はるかにうまく処理できます。
何か案は?投稿にサンプル レイアウトを含めていただければ幸いです。
ありがとう、
ほとんどの場合、相対レイアウトを使用する必要があります。次のような属性を使用して、相対レイアウト内にビューを配置できます
android:alignParentTop="true" // This puts the view at the top of the Relative Layout
また
android:layout_below="@id/view" // This puts the view below another view
今はテストできませんが、相対レイアウトを使用して例を実装する方法は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/ivBigImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bigImage"
android:layout_centerVertical="true" />
<ImageView
android:id="@+id/ivSmallImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/smallImage"
android:layout_toRightOf="@id/ivBigImage"/>
<TextView
android:id="@+id/tvTextOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Plus"
android:layout_toRightOf="@id/ivSmallImage" />
<TextView
android:id="@+id/tvTextTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Google Plus"
android:layout_toRightOf="@id/ivBigImage"
android:layout_below="@id/ivSmallImage/>
<TextView
android:id="@+id/tvTextThree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="use to do some social networking"
android:layout_toRightOf="@id/ivBigImage"
android:layout_below="@id/tvTextTwo/>
</RelativeLayout>
もちろん、この例で行ったように文字列をハードコードするべきではありません:D
通常、行ごとに別のレイアウトから項目を動的に追加できるので、ListView を使用します。TableLayout と比較して ListView を使用する利点は、行の内容が画面に表示できる範囲を超えた場合でも、画面を下にスクロールできることです。
ただし、同じことを実現するために、TableLayout を ScrollView でラップすることもできます。
それは、あなたがそれをどのようにコーディングしたいかについてのあなたの好みについてです。ユーザー側では、両方のレイアウトでほぼ同様の UI の結果を得ることができます。
私がすることの例:
1) 私のメイン レイアウトでは、この ListView をコンテナーとして使用しました。
<ListView
android:id="@+id/summary"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2) 次に、ListView に繰り返し追加されるすべての行に対して、row.xml という別のレイアウトを作成しました。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:id="@+id/icon"
android:layout_gravity="center_vertical|left"
android:src="@drawable/green_alert"
android:layout_marginRight="12dp"
android:layout_marginLeft="6dp"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/tvPNO"
android:layout_gravity="center_vertical"
android:textStyle="bold"
android:maxLines="1"
android:ellipsize="end"
android:text="PNO: 001.01"
android:textColor="#C5EAF8" />
<TextView
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/tvEntry"
android:layout_gravity="center_vertical"
android:gravity="right"
android:textStyle="bold"
android:maxLines="1"
android:ellipsize="end"
android:text="Entry: 1"
android:textColor="#C5EAF8" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/tvDefoliator"
android:layout_gravity="center_vertical"
android:minLines="1"
android:ellipsize="end"
android:text="Defoliator: Mahasena Corbetti" />
<TextView
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/tvLpF"
android:layout_gravity="center_vertical"
android:gravity="right"
android:minLines="1"
android:ellipsize="end"
android:text="Larvae: 10" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="35"
android:gravity="left">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/tvOryctes"
android:layout_gravity="center_vertical"
android:minLines="1"
android:ellipsize="end"
android:text="Oryctes: " />
<CheckBox
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:focusable="false"
android:clickable="false"
android:id="@+id/cbOryctes" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="35"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/tvTermite"
android:layout_gravity="center_vertical"
android:minLines="1"
android:ellipsize="end"
android:text="Termite: "/>
<CheckBox
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:focusable="false"
android:clickable="false"
android:id="@+id/cbTermite"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="30"
android:gravity="right">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/tvRat"
android:layout_gravity="center_vertical"
android:minLines="1"
android:ellipsize="end"
android:text="Rat: " />
<CheckBox
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:focusable="false"
android:clickable="false"
android:id="@+id/cbRat" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
私は 1 つの画像といくつかの他のビューを内部で使用しています。