如何设置自定义列表视图的布局?

时间:2014-01-21 10:28:07

标签: android android-layout

我正在尝试在我的应用中创建自定义列表视图。在肖像中它很好,但在横向模式下,行的宽度保持与纵向相同。这是我用来创建列表视图的列表和代码的屏幕截图。enter image description here

    <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:gravity="center_vertical"
    android:orientation="horizontal">

    <LinearLayout 
        android:id="@+id/lnrRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:background="@drawable/textlines" >

       <TextView
        android:id="@+id/txt_Profile_Name"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"/>

 </LinearLayout>

   <LinearLayout 
        android:id="@+id/lnrRowAction"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal">

    <Button 
     android:id="@+id/imgEdit"
     style="@style/editButton"  />

    <Button 
        android:id="@+id/imgDelete"
        style="@style/deleteButton" />
    </LinearLayout>
    </LinearLayout>

   <style name="editButton">
        <item name="android:drawableLeft">@drawable/ic_action_edit</item>
        <item name="android:textStyle">normal</item>
        <item name="android:textSize">12dp</item>
        <item name="android:textColor">@color/Gray</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
          <item name="android:background">@color/Transparent</item>
        <item name="android:text">Edit</item>
   </style>

3 个答案:

答案 0 :(得分:1)

这可以指向正确的方向(如果您没有在按钮样式中设置重量和/或宽度):

<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:gravity="center_vertical"
    android:orientation="vertical"
    >
    <LinearLayout
        android:id="@+id/lnrRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        >
        <TextView
            android:id="@+id/txt_Profile_Name"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:background="@drawable/textlines"
        />
    </LinearLayout>
    <LinearLayout
        <Button
            android:id="@+id/imgEdit"
            android:layout_height="0dp"
            android:layout_weight="1"
            style="@style/editButton"
        />
        <Button
            android:id="@+id/imgDelete"
            android:layout_height="0dp"
            android:layout_weight="1"
            style="@style/deleteButton"
        />
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:1)

使用相对布局而不是线性布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lnrRow"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
    android:id="@+id/txt_Profile_Name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/imgEdit"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/imgEdit"
    android:background="@drawable/textlines" />

<Button
    android:id="@+id/imgEdit"
    style="@style/editButton"
    android:layout_alignBaseline="@+id/imgDelete"
    android:layout_toLeftOf="@+id/imgDelete" />

<Button
    android:id="@+id/imgDelete"
    style="@style/deleteButton"
    android:layout_alignParentRight="true" />

</RelativeLayout>

答案 2 :(得分:1)

这是因为在您的父级线性布局中,orintation为 水平 。所以,您只需要通过 垂直 进行更改,然后获得所需的布局..