RelativeLayout:优先考虑视图

时间:2015-01-19 11:08:12

标签: android

我将尝试尽可能地简化而不更改真正的xml:

<TextView
    android:id="@+id/txtTitleDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="30dp"/>

<android.support.v4.view.ViewPager
    android:id="@+id/datePickerPager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtTitleDate"/>

<TextView
    android:id="@+id/txtPriorityDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minHeight="50dp"
    android:layout_below="@+id/datePickerPager"
    android:layout_alignParentBottom="true"/>

<LinearLayout
    android:id="@+id/layoutPriorityDate"
    android:layout_width="200dp"
    android:layout_height = "wrap_content"
    android:layout_alignTop="@+id/txtPriorityDate"
    android:layout_alignParentRight="true"
    android:orientation="vertical">
  <!-- omitted -->
</LinearLayout>

没有ViewPager,我有足够的空间在底部显示LinearLayout。但最终导致ViewPager占用的空间超出应有的范围,并流过父视图。

如何在没有任何硬编码大小值的情况下优先使用LinearLayout

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用android:layout_weight中的LinearLayout属性解决此问题。

正如Linear Layout site from the API Guide

所述
  

此属性根据方式为视图指定“重要性”值   屏幕上应该占用很多空间。重量值更大   允许它展开以填充父视图中的任何剩余空间。   子视图可以指定权重值,然后指定任何剩余空间   在视图组中按子女的比例分配给他们   宣称体重。默认权重为零。

在您的情况下,将其他视图嵌套在LinearLayout中可以完成这项工作:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txtTitleDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:layout_marginBottom="30dp"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/datePickerPager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_below="@+id/txtTitleDate"/>

    <TextView
        android:id="@+id/txtPriorityDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="50dp"
        android:layout_below="@+id/datePickerPager"
        android:layout_weight="2"
        android:layout_alignParentBottom="true"/>

    <LinearLayout
        android:id="@+id/layoutPriorityDate"
        android:layout_width="200dp"
        android:layout_height = "wrap_content"
        android:layout_alignTop="@+id/txtPriorityDate"
        android:layout_alignParentRight="true"
        android:layout_weight="2"
        android:orientation="vertical">
    </LinearLayout>

</LinearLayout>

您应该使用不同的重量值测试一下,以满足您的精确需求。