40

静的メニューをリスト内の行のセットとして表示するフラグメントを作成したいと思います。

テーブルビューに静的セルを使用するiOSメソッドが好きです。どうすればAndroidでこれを実現できますか(要素を定義するためのコードは必要ありません。xmlだけです)

次の方法でxmlに静的要素を定義する通常の方法はありますか

(擬似コード)

list_view.xml

<List view>
  - use element my_row with onclick=row1_clicked and title="row 1"
  - use element my_row with onclick=row2_clicked and title="row 2"
  - use element my_row with onclick=row3_clicked and title="row 3"
  - use element my_row with onclick=row4_clicked and title="row 4"
</List view>

my_row.xml

<My Row>
  - text field (title should go here)
  - on click (on click should go here)
</My Row>

したがって、基本的には、行をリストに「含め」、xmlレベルで(コードなしで)実行したいと思います。

4

4 に答える 4

26

残念ながら、xml によるリスト ビューの定義は禁止されています。代わりにアダプターをいじる必要があります。

于 2012-12-17T14:42:17.180 に答える
14

ScrollView 内にネストされた垂直 LinearLayout を使用して、探しているものを取得できます。「リストビュー」アイテムを LinearLayout 内に配置し、リストビューの要素のようにスタイルを設定します。

絶対に ListView を使用する必要がある場合 (たとえば、ListFragment を使用している場合)、ListAdapter サブクラスを使用するか、独自のものを作成する必要があります。

于 2013-07-08T17:13:49.253 に答える
6

実は方法があります!includeを使用したレイアウトの再利用- タグ

再利用したいレイアウトを定義するだけです。

<LinearLayout
 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"
     android:orientation="horizontal">
 <ImageView
        android:id="@+id/profileImage"
        android:layout_width="128dp"
        android:layout_height="128dp"
        android:src="@drawable/lena" />
 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/profileOnline"/>
 </LinearLayout>

次に、必要な回数だけViewGroupに含めます

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal">

    <include layout="@layout/titlebar"/>

    <TextView android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/hello"
              android:padding="10dp" />

    ...

</LinearLayout>

タグで指定することにより、含まれるレイアウトのルート ビューのすべてのレイアウト パラメータ (任意の android:layout_* 属性) をオーバーライドすることもできます。例えば:

<include android:id="@+id/news_title"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         layout="@layout/title"/>

詳細については、http://developer.android.com/training/improving-layouts/reusing-layouts.htmlを参照してください。

于 2015-07-16T14:20:03.383 に答える