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 回答
24

使用字符串数组可以取得一些进展,例如,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
  <ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/sports_array"/>
</LinearLayout>

加上

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array name="sports_array">
    <item>Shuttle Badminton</item>
    <item>Tennis</item>
    <item>FootBall</item>
  </string-array>
</resources>

来源:http ://theopentutorials.com/tutorials/android/listview/android-creating-and-populating-listview-items-in-xml/

于 2014-05-27T06:24:27.987 回答
14

您可以使用嵌套在 ScrollView 中的垂直 LinearLayout 来获取您要查找的内容。将您的“listview”项目放在 LinearLayout 中,并将它们设置为看起来像 listview 的元素。

如果您绝对必须使用 ListView(例如,您正在使用 ListFragment),您将不得不使用 ListAdapter 子类或滚动您自己的子类。

于 2013-07-08T17:13:49.253 回答
6

其实有办法!使用包含标签重用布局

只需定义要重用的布局。

<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 回答