Android Listview Item:如何设置项目的自定义高度?

时间:2015-10-29 12:06:10

标签: android android-layout listview styling

我有以下列表项布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/AppTheme.ListViewItemStyle_1">

    <View android:id="@+id/data_view_stripe"
        style="@style/AppTheme.RedStripe"/>

    <ImageView android:id="@+id/data_iv_main"
        style="@style/AppTheme.ImageBig"
        android:src="@drawable/web_icon_weight"
        android:contentDescription="Item icon"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="4"
        android:padding="4dp"
        android:layout_gravity="center">

        <TextView android:id="@+id/data_tv_title"
            style="@style/AppTheme.ListItemDefaultHeading"
            android:text="BP - diastolic"/>

        <TextView android:id="@+id/data_tv_value"
            style="@style/AppTheme.WrapContent.Value"
            android:text="87 mmHg"/>

        <TextView android:id="@+id/data_tv_occurence_desc"
            style="@style/AppTheme.WrapContent.Calendar"
            android:text="Daily at 8:00"/>

        <TextView android:id="@+id/data_tv_overdue"
            style="@style/AppTheme.WrapContent.Schedule"
            android:text="Overdue (Today at 8:00)"/>

        <TextView android:id="@+id/data_tv_test_time"
                  style="@style/AppTheme.WrapContent.Schedule"
                  android:text="Overdue (Today at 8:00)"/>

    </LinearLayout>

    <ImageButton android:id="@+id/data_btn_favourite"
                 style="@style/AppTheme.RatingBasic"
                 android:paddingLeft="15dp"
                 android:paddingRight="0dp"
                 android:contentDescription="Favourite button"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1"
        android:layout_gravity="center">

        <ImageView android:id="@+id/data_iv_trend"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:src="@drawable/ic_arrow_down"
            android:contentDescription="Progress indicator"/>

        <ImageButton android:id="@+id/data_btn_info"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="@color/background_white"
            style="@style/AppTheme.Info"
            android:contentDescription="Information button"/>

    </LinearLayout>

</LinearLayout>

使用以下样式:

 <!-- Base ListVIew Item -->
    <style name="AppTheme.ListViewItemBase" >
        <item name="android:background">@color/background_white</item>
        <item name="android:paddingTop">10dp</item>
        <item name="android:paddingBottom">10dp</item>
        <item name="android:paddingRight">10dp</item>
        <item name="android:divider">@android:color/holo_red_dark</item>
        <item name="android:dividerHeight">10dp</item>
        <item name="android:orientation">horizontal</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:layout_gravity">center</item>
    </style>

    <!--  ListVIew Item style 01-->
    <style name="AppTheme.ListViewItemStyle_1" parent="AppTheme.ListViewItemBase">
        <item name="android:layout_height">50dp</item>
        <item name="android:descendantFocusability">blocksDescendants</item>
    </style>

我尝试使用:

将项目的自定义高度设置为50dp
android:layout_height

Android Studio布局预览中的高度已更改,但如果我将应用部署到实际设备,则该项目的高度保持不变。

如何使用样式设置列表项的自定义高度?

非常感谢您的任何建议。

修改 根据你的建议,我尝试了以下不适合我的例子(项目高度仍然相同)。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:orientation="horizontal"
    android:layout_height="20dp"
    >

    <View android:id="@+id/data_view_stripe"
        style="@style/AppTheme.RedStripe"/>

    <ImageView android:id="@+id/data_iv_main"
        style="@style/AppTheme.ImageBig"
        android:src="@drawable/web_icon_weight"
        android:contentDescription="Item icon"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="4"
        android:padding="4dp"
        android:layout_gravity="center">

        <TextView android:id="@+id/data_tv_title"
            style="@style/AppTheme.ListItemDefaultHeading"
            android:text="BP - diastolic"/>

        <TextView android:id="@+id/data_tv_value"
            style="@style/AppTheme.WrapContent.Value"
            android:text="87 mmHg"/>

        <TextView android:id="@+id/data_tv_occurence_desc"
            style="@style/AppTheme.WrapContent.Calendar"
            android:text="Daily at 8:00"/>

        <TextView android:id="@+id/data_tv_overdue"
            style="@style/AppTheme.WrapContent.Schedule"
            android:text="Overdue (Today at 8:00)"/>

        <TextView android:id="@+id/data_tv_test_time"
                  style="@style/AppTheme.WrapContent.Schedule"
                  android:text="Overdue (Today at 8:00)"/>

    </LinearLayout>

    <ImageButton android:id="@+id/data_btn_favourite"
                 style="@style/AppTheme.RatingBasic"
                 android:paddingLeft="15dp"
                 android:paddingRight="0dp"
                 android:contentDescription="Favourite button"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1"
        android:layout_gravity="center">

        <ImageView android:id="@+id/data_iv_trend"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:src="@drawable/ic_arrow_down"
            android:contentDescription="Progress indicator"/>

        <ImageButton android:id="@+id/data_btn_info"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="@color/background_white"
            style="@style/AppTheme.Info"
            android:contentDescription="Information button"/>

    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

删除

  1. style="@style/AppTheme.ListViewItemStyle_1"
  2. 在哪里 android:orientation
  3. 然后。你可以这样试试,

    <?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="50dp"
      android:orientation="horizontal">
    

    注意: 根据您的要求将android:orientation=""设置为horizontalvertical