1

在我的应用程序中,我正在使用片段。问题是我无法为列表中的每个项目设置边距TitlesFragment extends ListFragment。我还必须为里面显示的完整数据集添加边距DetailsFragment extends Fragment。如何才能做到这一点?请帮帮我。提前致谢。

请看我的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >

<ListView
    android:id="@+id/list_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:cacheColorHint="#00000000"
    android:divider="@android:color/transparent"
    android:dividerHeight="10dp"
    android:scrollbars="none"
    android:smoothScrollbar="true" >
</ListView>

4

2 回答 2

0

您必须在文件中设置dividerdividerHeight属性layout.xml。例如

<ListView
  android:id="@android:id/list"
  android:divider="@android:color/transparent"
  android:dividerHeight="5dip" />

这样,您将获得ListFragment间隔的所有元素5 dip

于 2012-07-05T12:11:21.287 回答
0

ListViews(连同 Fragments、ListFragments 等)似乎覆盖了提供的布局的根参数(高度、宽度),以便将预定义的 View/Item 尺寸适合父级。这似乎也发生在每个布局的孩子最大尺寸上,例如,来自 AOSP 的 simple_list_item_1.xml 的 TextView

由于您专门要求 ListView 项目间距,我仍然不会按照 blackbelt 的建议使用 dividerHeight ,因为这会改变原始内容的居中(第一个项目也不会从列表顶部获得所需的间距,如分隔线位于每个项目下方)。

对于 ListView 项目,您通常可以通过设置具有顶部和底部边距的自定义布局(由自定义适配器调用)来覆盖此行为。请参阅以下基于示例的 simple_list_item_1.xml 并注意最后的边距修饰符:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"

    android:layout_marginTop="20dp"
    android:layout_marginBottom="20dp"
/>

(您可能需要为对“?android:attr”的非公开引用提供内联值)

然后,您必须为您的列表调用一个自定义适配器(例如 ArrayAdapter)并将您的自定义列表项 XML 提供给它。

于 2013-04-29T17:00:12.563 回答