android - 相对布局 : giving priority to a view

标签 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 占用了比它应有的更多的空间,并流过父 View 。

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

谢谢。

最佳答案

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

Linear Layout site from the API Guide 中所述:

This attribute assigns an "importance" value to a view in terms of how much space is should occupy on the screen. A larger weight value allows it to expand to fill any remaining space in the parent view. Child views can specify a weight value, and then any remaining space in the view group is assigned to children in the proportion of their declared weight. Default weight is zero.

在您的情况下,将其他 View 嵌套在 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>

您应该使用不同的权重值进行一些测试,以满足您的精确需求。

关于android - 相对布局 : giving priority to a view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28023223/

相关文章:

Android - 在 AsyncTask 中执行后

android - 在ActionBar和 fragment 中使用SearchView小部件

Android 值-小 不使用

javascript - 通过移动浏览器扫描条码?

android - cordova-plugin-inapppurchase 错误 : package com. android.vending.billing 不存在

Android - LocationManager 的位置与 GoogleMaps 不同

android - 如何阻止 Android 的 ADB 自动连接到我局域网中的设备?

android - 被告知项目在使用时未使用 gradle 构建系统

android - 如何从触发填充请求的位置获取客户端应用程序的包名称

android 玩游戏服务配置不正确。任何人都知道如何解决?