0

ここに画像の説明を入力

Androidで次のことを達成するために使用するのに最適なレイアウトを探しています。これは、繰り返される行に似ています。

現在の行は、5 つのビュー コントロール (2 つの画像と 3 つのテキスト ラベル) で構成されています。

ネストされたテーブルレイアウトを使用して処理できると確信しています。しかし、これまで読んだ限りでは. 相対レイアウトを使用すると、はるかにうまく処理できます。

何か案は?投稿にサンプル レイアウトを含めていただければ幸いです。

ありがとう、

4

2 に答える 2

1

ほとんどの場合、相対レイアウトを使用する必要があります。次のような属性を使用して、相対レイアウト内にビューを配置できます

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

于 2013-11-02T02:15:41.633 に答える
0

通常、行ごとに別のレイアウトから項目を動的に追加できるので、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 つの画像といくつかの他のビューを内部で使用しています。

于 2013-11-02T02:35:27.720 に答える