在片段中添加边距

时间:2012-07-05 12:08:21

标签: android android-fragments

在我的应用程序中,我正在使用片段。问题是我无法为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>

2 个答案:

答案 0 :(得分:0)

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

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

通过这种方式,您将ListFragment的所有元素间隔为5 dip

答案 1 :(得分:0)

ListViews(以及Fragments,ListFragments等)似乎会覆盖提供的布局的根参数(高度,宽度),以使预定义的View / Item维度适合父级。每个布局的子项最大维度似乎也会发生这种情况,例如AOSP的simple_list_item_1.xml中的T​​extView

由于你专门询问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。