【问题标题】:Adding scrollview to a layout section when it is taking too much height from another section当从另一个部分占用太多高度时,将滚动视图添加到布局部分
【发布时间】:2020-10-03 10:54:51
【问题描述】:

编辑:根据建议的答案,我得到了这个结果: 历史布局有一个列表视图,其高度与父级匹配,我认为这会产生一些问题,有什么解决方法吗? 显示隐藏历史布局的新代码是这样的:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"
    android:padding="@dimen/ParentLayoutPadding"
    android:background="@color/BackgroundColor"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/Layout_Main">
    <ScrollView
        android:id="@+id/SearchNumbersScrollView"
            android:fadeScrollbars="false"
            app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/HistoryLinearLayout"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:animateLayoutChanges="true">
        <LinearLayout
            android:id="@+id/SearchNumbersLinearLayout"
            android:elevation="@dimen/ParentLayoutElevation"
            android:background="@drawable/ResourceOptionsBorderWithoutTopPadding"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="vertical"
            android:visibility="visible">
            <RelativeLayout
                android:animateLayoutChanges="true"
                android:id="@+id/SearchNumbersTitleRelativeLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TextView
                    style="@style/MyCategoryTitleTextStyle"
                    android:text="@string/Menu_DrawSearch"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/PaidDescriptionTextView"
                    android:layout_centerInParent="true" />
                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/ShowInstructionsImageButton"
                    android:layout_alignParentRight="true"
                    android:layout_width="@dimen/MinimumItemSize"
            android:layout_height="@dimen/MinimumItemSize"
            android:backgroundTint="@color/normalTextColorPrimaryDark"
            android:background="@drawable/ic_info_layer"
                    android:layout_centerVertical="true"
                    android:contentDescription="@string/Common_InformationIconContentDescription" />
            </RelativeLayout>
            <View
                android:layout_width="match_parent"
                android:layout_marginBottom="@dimen/LineMargin"
                android:layout_height="@dimen/CategoryLineHeight"
                android:background="@android:color/darker_gray"/>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:orientation="vertical"
                android:layout_gravity="center">
                <include
                    android:animateLayoutChanges="true"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    layout="@layout/SelectDateRange"/>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:orientation="horizontal"
                    android:layout_gravity="center">
                    <TextView
                        style="@style/MyTextStyle"
                        android:padding="@dimen/CategoryTitlePadding"
                        android:gravity="left"
                        android:text="@string/NumbersSearch_NumbersTitle"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/ListNameTextView" />
                    <TextView
                        style="@style/MyTextStyle"
                        android:inputType="textMultiLine"
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="wrap_content"
                        android:id="@+id/ListTextView"
                        android:layout_marginRight="@dimen/CategoryTitlePadding"
                        android:layout_alignBottom="@+id/ListNameTextView"
                        android:layout_alignBaseline="@+id/ListNameTextView"
                        android:hint="@string/NumbersSearch_NumbersHint"
                        android:gravity="left"
                        android:ellipsize="end"
                        android:minLines="1"
                        android:maxLines="2" />
                    <com.google.android.material.button.MaterialButton
                        style="@style/AppTheme.GrayButtonStyle"
                        android:text="@string/NumbersSearch_NumberSelectionButtonTitle"
                            android:layout_marginRight="@dimen/CategoryTitlePadding"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/OptionsTextView"
                        android:id="@+id/SelectNumbersButton"
                        android:layout_centerHorizontal="true" />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="left"
                    android:orientation="vertical"
                    android:layout_gravity="left">
                    <CheckBox
                        style="@style/MyTextStyle"
                        android:text="@string/NumbersSearch_SearchPerNumber"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/CheckboxMarginTopBottom"
                        android:layout_marginBottom="@dimen/CheckboxMarginTopBottom"
                        android:id="@+id/SeperateCheckBox"
                        android:buttonTint="@color/buttonColorPrimary"
                        android:paddingRight="@dimen/CheckBoxPadding" />
                    <CheckBox
                        style="@style/MyTextStyle"
                        android:text="@string/NumbersSearch_IncludeDrawTime"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/CheckboxMarginTopBottom"
                        android:layout_marginBottom="@dimen/CheckboxMarginTopBottom"
                        android:id="@+id/ShowListsCheckBox"
                        android:buttonTint="@color/buttonColorPrimary"
                        android:paddingRight="@dimen/CheckBoxPadding" />
                    <LinearLayout
                        android:id="@+id/SearchTypeLinearLayout"
                        android:layout_below="@+id/SelectDate"
                        android:paddingLeft="@dimen/CategoryTitlePadding"
                        android:paddingRight="@dimen/CategoryTitlePadding"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:orientation="horizontal"
                        android:layout_gravity="center">
                        <TextView
                            android:layout_weight="1"
                            style="@style/MyTextStyle"
                            android:text="@string/NumbersSearch_ShowResultsTitle"
                            android:inputType="textMultiLine"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/ShowResultsTitleTextView"
                            android:minLines="1"
                            android:maxLines="2"
                            android:gravity="left" />
                        <Spinner
                            android:id="@+id/ShowResultsSpinner"
                            android:layout_toRightOf="@+id/ShowResultsTitleTextView"
                            android:layout_below="@+id/SelectDate"
                            android:ellipsize = "none"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textAlignment="center"
                            android:foregroundGravity="center_vertical"
                            android:layout_alignBottom="@+id/ShowResultsTitleTextView"
                            android:paddingLeft="@dimen/SpinnerPaddingStartEnd"
                            android:paddingStart="@dimen/SpinnerPaddingTopBottom"
                            android:paddingBottom="@dimen/SpinnerPaddingTopBottom"
                            android:paddingTop="@dimen/SpinnerPaddingTopBottom"
                            android:layout_alignTop="@+id/ShowResultsTitleTextView" />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
            <com.google.android.material.button.MaterialButton
                style="@style/AppTheme.ButtonStyle"
                android:elevation="@dimen/ButtonElevation"
                android:text="@string/NumbersSearch_ButtonSearch"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/OptionsTextView"
                android:id="@+id/SearchButton"
                android:gravity="center"
                android:layout_gravity="center_horizontal"
                android:layout_centerHorizontal="true" />
        </LinearLayout>
    </ScrollView>
    <include
    android:id="@+id/HistoryLinearLayout"
    app:layout_constraintTop_toBottomOf="@+id/SearchNumbersScrollView"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:minHeight="150dp"
        layout="@layout/HistoryLinearLayout"/>
</androidx.constraintlayout.widget.ConstraintLayout>

HistoryLinearLayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:minHeight="@dimen/MinimumHistoryLayoutHeight"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/HistoryLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/HistoryPadding"
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_gravity="center">
        <TextView
            android:id="@+id/HistoryTitleTextView"
            style="@style/MyTextStyle"
            android:text="@string/Common_HistoryWithColon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="@dimen/ParentLayoutPadding"
            android:gravity="center"
            android:layout_centerHorizontal="true" />
        <com.google.android.material.button.MaterialButton
            style="@style/AppTheme.GrayButtonStyle"
            android:text="@string/NumbersSearch_Clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/OptionsTextView"
            android:id="@+id/ClearHistoryButton"
            android:layout_centerHorizontal="true" />
    </LinearLayout>
    <ListView
            android:id="@+id/HistoryListView"
            android:background="@drawable/ListViewBackground"
            android:layout_below="@id/HistoryLinearLayout"
            android:clipToPadding="false"
            android:clipChildren="false"
            android:divider="@color/BackgroundColor"
            android:dividerHeight="8dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
</LinearLayout>

Dimens.xml

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
    <dimen name="nav_header_vertical_spacing">8dp</dimen>
    <dimen name="nav_header_height">176dp</dimen>
    <dimen name="fab_margin">16dp</dimen>

  <!-- common dimens -->
  <dimen name="small_50">4dp</dimen>
  <dimen name="small_100">8dp</dimen>
  <!-- 50% of normal = 8dp -->

  <dimen name="normal_100">16dp</dimen>
  <!-- 100% of normal = 16dp -->
  <dimen name="normal_125">20dp</dimen>
  <!-- 125% of normal = 16dp + 4dp = 20dp -->
  <dimen name="normal_150">24dp</dimen>
  <dimen name="normal_175">28dp</dimen>

  <dimen name="normal_200">32dp</dimen>
  <!-- normal_200 = 2 x normal_100 -->
  <dimen name="normal_225">36dp</dimen>
  <dimen name="normal_250">40dp</dimen>
  <dimen name="normal_275">44dp</dimen>

  <dimen name="normal_300">48dp</dimen>
  <!-- normal_300 = 3 x normal_100 -->
  <dimen name="normal_325">52dp</dimen>
  <dimen name="normal_350">56dp</dimen>
  <dimen name="normal_375">60dp</dimen>

  <dimen name="large_100">32dp</dimen>
  <!-- large_100 = 2 x normal_100 -->
  <dimen name="large_125">40dp</dimen>
  <dimen name="large_150">48dp</dimen>
  <dimen name="large_175">56dp</dimen>
  <dimen name="large_200">64dp</dimen>

  <!-- ResourceLayout -->
  <dimen name="ImageViewResourceLayout">60dp</dimen>
  <dimen name="ImageViewResourceLayoutPadding">7dp</dimen>
  <dimen name="ResourceOptionsMarginInsideCards">4dp</dimen>
  <dimen name="ResourceOptionsMarginBetweenCards">12dp</dimen>
  <dimen name="ResourceOptionsButtonOrSwitchMargin">5dp</dimen>
  <dimen name="ResourceOptionsMarginBetweenLinearLayouts">10dp</dimen>
  <dimen name="ResourceOptionsMarginFromScreen">12dp</dimen>
  <dimen name="ResourceOptionsTextSize">14dp</dimen>
  <dimen name="LineHeight">2dp</dimen>
  <dimen name="CategoryLineHeight">1dp</dimen>
  <dimen name="LineMarginTopBottom">10dp</dimen>
  <!-- OptionsLayout -->
  <dimen name="OptionsSwitchPadding">11dp</dimen>
  <dimen name="RestorePurchasePadding">11dp</dimen>
  <dimen name="AutoCloseEditextWidth">60dp</dimen>
  <dimen name="CurrentColorSize">36dp</dimen>
  <dimen name="ResourceOptionsLineMarginForCategory">60dp</dimen>
  <dimen name="TemplatesSpinnerHeight">112dp</dimen>
  <!-- SearchScreenLayout -->
  <dimen name="ImageButtonMargin">10dp</dimen>
  <dimen name="StatisticsHeight">60dp</dimen>
  <dimen name="ElementPaddingTopBottom">10dp</dimen>
  <dimen name="ElementPaddingParentBottom">15dp</dimen>
  <dimen name="SwitchPadding">11dp</dimen>
  <dimen name="SearchMargin">11dp</dimen>
  <dimen name="NumbersFrequencySpinnerPadding">5dp</dimen>
  <dimen name="NumberSelectionPaddingTop">10dp</dimen>
  <dimen name="NumberSelectionPaddingPadding">1dp</dimen>
  <dimen name="NumberSelectionSize">30dp</dimen>
  <dimen name="NumberSelectionCornerRadius">15dp</dimen>
  <dimen name="NumberSelectionPaddingRight">4dp</dimen>
  <!-- OptionsLayout -->
  <dimen name="PortMargin">8dp</dimen>
  <!-- StatisticsLayout -->
  <dimen name="OptionsSpinnerWidth">170dp</dimen>
  <dimen name="EditTextMargin">4dp</dimen>
  <dimen name="PasswordEditTextMargin">8dp</dimen>
  <!-- StatisticsLayout PerformanceTrend-->
  <dimen name="PerformanceScoreSize">160dp</dimen>
  <dimen name="PerformanceTrendHeight">200dp</dimen>
  <item format="float" name="LabelTextSize" type="dimen">40</item>
  <item format="float" name="LineSize" type="dimen">10</item>
  <item format="float" name="MaxValue" type="dimen">100</item>
  <!-- Common -->
  <dimen name="SpinnerHeight">40dp</dimen>
  <dimen name="MinimumHistoryLayoutHeight">150dp</dimen>
  <dimen name="HistoryPadding">4dp</dimen>
  <dimen name="IconSize">24dp</dimen>
  <dimen name="ButtonIconSize">20dp</dimen>
  <dimen name="ParentLayoutPadding">10dp</dimen>
  <dimen name="AlertDialogPadding">12dp</dimen>
  <dimen name="SpinnerPaddingStartEnd">8dp</dimen>
  <dimen name="SpinnerPaddingTopBottom">8dp</dimen>
  <dimen name="CategoryTitlePadding">5dp</dimen>
  <dimen name="CheckboxMarginTopBottom">3dp</dimen>
  <dimen name="CategoryMarginTop">2dp</dimen>
    <dimen name="CategoryMarginBottom">5dp</dimen>
      <dimen name="CategoryMarginTopBottom">5dp</dimen>
  <dimen name="CategorySeperatorMarginTopBottom">12dp</dimen>
  <dimen name="SelectDateMarginRight">5dp</dimen>
  <dimen name="ParentLayoutElevation">1dp</dimen>
  <dimen name="ButtonMargin">5dp</dimen>
  <dimen name="ButtonElevation">2dp</dimen>
  <dimen name="TwoLineText">2</dimen>
  <dimen name="UnlockDateRangeMargin">12dp</dimen>
  <dimen name="IconButtonSize">24dp</dimen>
  <dimen name="IconButtonMargin">14dp</dimen>
  <!-- OddEvenDelays -->
  <dimen name="CheckBoxPadding">8dp</dimen>
  <dimen name="BetPerRawWidth">50dp</dimen>
  <!-- Info -->
  <dimen name="ProbabilityMargin">5dp</dimen>
  <dimen name="PercentageTopMargin">10dp</dimen>
  <dimen name="SpinnerWidth">130dp</dimen>
</resources>

ListViewBackground.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="3dp"/>
    <stroke android:width="1dp" android:color="@color/lightBackgroundColor" />

ResourceOptionsBorderWithoutTopPadding.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="3dp"/>
    <padding android:left="8dp" android:right="8dp" android:bottom="8dp"/>
    <stroke android:width="1dp" android:color="@color/lightBackgroundColor" />
    <solid android:color="@color/lightBackgroundColor" />
</shape>
    <solid android:color="@color/lightBackgroundColor" />
</shape>

styles.xml

<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

  <style name="AppTheme.NumberPicker" parent="Theme.AppCompat.Light.NoActionBar" >
    <item name="android:editTextColor">@android:color/white</item>
    <item name="colorPrimary">@android:color/white</item>
    <item name="colorPrimaryDark">@android:color/white</item>
    <item name="colorAccent">@android:color/white</item>
  </style>

<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:spinnerItemStyle">@style/spinnerItemStyle</item>
<item name="android:spinnerDropDownItemStyle">@style/spinnerDropDownItemStyle</item>
</style>

  <style name="DatePickerDialogTheme" parent="ThemeOverlay.AppCompat.Dialog">
    <item name="colorAccent">@color/colorPrimary</item>    <!--header background-->
    <item name="android:windowBackground">@color/lightBackgroundColor</item>    <!--calendar background-->
    <item name="android:colorControlActivated">@color/colorPrimary</item>    <!--selected day-->
    <item name="android:textColorPrimary">@color/colorPrimary</item>    <!--days of the month-->
    <item name="android:textColorSecondary">@color/colorPrimary</item>    <!--days of the week-->
  </style>
  <style name="AppTheme.ButtonStyle" parent ="Widget.AppCompat.Button.Colored">
    <!-- Widget.AppCompat.Button.Colored -->
    <item name="android:textColor">@android:color/white</item>
    <item name="android:backgroundTint">@color/buttonColorPrimary</item>
    <item name="cornerRadius">3dp</item>
  </style>
<style name="AppTheme.OutlinedButtonStyle" parent ="Widget.MaterialComponents.Button.OutlinedButton">
<!-- Widget.AppCompat.Button.Colored -->
  <item name="iconPadding">0dp</item>
  <item name="android:insetTop">0dp</item>
  <item name="android:insetBottom">0dp</item>
  <item name="android:paddingLeft">12dp</item>
  <item name="android:paddingRight">12dp</item>
  <item name="android:minWidth">48dp</item>
  <item name="android:minHeight">48dp</item>
  <item name="android:textColor">@drawable/WhiteTextColorSelector</item>
  <item name="backgroundTint">@android:color/transparent</item>
  <!-- <item name="cornerRadius">3dp</item> -->
</style>
  <style name="AppTheme.GrayButtonStyle" parent ="Widget.AppCompat.Button.Borderless">
    <!-- Widget.AppCompat.Button.Borderless -->
    <item name="android:textColor">@drawable/BasicTextColorSelector</item>
    <item name="backgroundTint">@android:color/transparent</item>
    <item name="cornerRadius">3dp</item>
    <item name="rippleColor">@color/buttonColorPrimaryLight</item>
    <item name="strokeColor">@color/buttonColorPrimaryLight</item>
    <item name="strokeWidth">2dp</item>
  </style>
  <style name="AppTheme.WhiteButtonStyle" parent ="Widget.AppCompat.Button.Borderless">
    <!-- Widget.AppCompat.Button.Borderless -->
    <item name="android:textColor">@drawable/WhiteTextColorSelector</item>
    <item name="backgroundTint">@android:color/transparent</item>
    <item name="cornerRadius">3dp</item>
    <item name="rippleColor">@android:color/white</item>
    <item name="strokeColor">@android:color/white</item>
    <item name="strokeWidth">2dp</item>
  </style>
  <style name="AppTheme.IconButtonStyle" parent ="Widget.AppCompat.Button.Borderless">
    <!-- Widget.AppCompat.Button.Borderless -->
    <item name="android:textColor">@color/buttonColorPrimary</item>
    <item name="backgroundTint">@android:color/transparent</item>
    <item name="cornerRadius">3dp</item>
    <item name="rippleColor">@color/buttonColorPrimaryLight</item>
    <item name="strokeColor">@color/buttonColorPrimaryLight</item>
    <item name="strokeWidth">2dp</item>
  </style>
  <style name="NumberSelectionAlertDialog" parent="Theme.AppCompat.Dialog.Alert">
    <item name="android:windowMinWidthMajor">100%</item>
    <item name="android:windowMinWidthMinor">100%</item>
    <item name="android:colorAccent">@android:color/white</item>
    <item name="android:windowBackground">@color/buttonColorPrimaryLight</item>
  </style>
  <style name="CommonAlertDialog" parent="Theme.AppCompat.Dialog.Alert">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:colorAccent">@android:color/white</item>
    <item name="android:windowBackground">@color/buttonColorPrimaryLight</item>
  </style>
  <style name="CommonAlertDialogSpinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner">
    <item name="android:paddingStart">10dp</item>
    <item name="android:paddingEnd">10dp</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:spinnerItemStyle">@style/spinnerCommonAlertDialogItemStyle</item>
  </style>
<style name="MyTextStyle" parent="@android:style/TextAppearance.Small">
<item name="android:textColor">@drawable/BasicTextColorSelector</item>
  <item name="android:buttonTint">@color/normalTextColorPrimaryDark</item>
  <item name="android:textColorHint">@color/buttonColorPrimary</item>
</style>
  <style name="MyCategoryTitleTextStyle" parent="MyTextStyle">
    <item name="android:textStyle">bold</item>
  </style>
  <style name="CommonAlertDialogTextStyle" parent="@android:style/TextAppearance.Small">
    <item name="android:textColor">@android:color/white</item>
  </style>

  <!-- Spinner style -->
  <style name="spinnerCommonAlertDialogItemStyle">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorPrimary">@android:color/white</item>
  </style>
  <!-- Spinner style drop down style-->
  <style name="spinnerCommonAlertDialogDropDownItemStyle">
    <item name="android:textColor">@android:color/white</item>
  </style>
  <!-- Spinner style -->
  <style name="spinnerItemStyle">
    <item name="android:textColor">@color/colorPrimaryDark</item>
    <!-- <item name="android:gravity">left</item>-->
     <!-- <item name="android:textAlignment">left</item>-->
  </style>

  <!-- Spinner style drop down style-->
  <style name="spinnerDropDownItemStyle">
    <item name="android:paddingStart">@dimen/SpinnerPaddingStartEnd</item>
    <item name="android:paddingEnd">@dimen/SpinnerPaddingStartEnd</item>
    <item name="android:textColor">@color/colorPrimaryDark</item>
    <item name="android:gravity">center</item>
    <item name="android:textAlignment">center</item>
  </style>
  
  <style name="CategoryTitleTextStyle" parent="@android:style/TextAppearance.Medium" >
    <item name="android:textStyle">normal</item>
  </style>
  
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark" />

</resources>

在 1080p 分辨率的手机中看起来像这样:

我的问题是: 图像中的蓝色框(HistoryLinearLayout)是较小的屏幕看起来太小了,我希望最小高度为 150sp(我尝试在 HistoryLinearLayout 中添加 minHeight,但它没有做任何事情)和图像中的黄色部分发生这种情况时可以滚动,因此如果黄色部分不适合并且同时 HistoryLinearLayout 至少为 150sp,则黄色部分将出现滚动条。

现在它不起作用,滚动条没有做任何事情,并且 minHeight 没有得到尊重。

换句话说,我想要的是:如果蓝色部分 (HistoryLinearLayout) 小于 150sp,则将其设为 150sp 并使黄色部分 (ScrollView) 可滚动。我不介意这是否也可以通过代码发生。

【问题讨论】:

  • 代码未完成,无法重现。根据我的测试,当里面的元素超出高度时,滚动视图会滚动。您能否提供代码来重现您的问题?
  • @Wendy 谢谢,所以在你的测试中历史布局总是可见的,如果没有足够的空间滚动视图正在拉伸内容?在我的测试中奇怪的是,滚动视图就像它不存在一样,历史布局可能看起来非常小。我稍后会提供代码
  • 等待您的代码。
  • @WendyZang-MSFT 我已经用所有布局文件更新了代码

标签: android layout xamarin.android scrollview


【解决方案1】:

约束让你构建灵活的布局。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <ScrollView
        android:id="@+id/scroll"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#aa3"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/blue"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        >

        <TextView
            android:layout_width="30dp"
            android:layout_height="wrap_content"
            android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
            android:textSize="24dp"
            />
    </ScrollView>

    <FrameLayout
        android:id="@+id/blue"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#33f"
        android:minHeight="150dp"
        app:layout_constraintTop_toBottomOf="@id/scroll"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        >

        <TextView
            android:layout_width="30dp"
            android:layout_height="wrap_content"
            android:text="bbb"
            android:textSize="24dp"
            />
    </FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

如果您将滚动和蓝色都设置为layout_height="0dp",它们总是共享均匀空间。

【讨论】:

  • 我一直觉得设置 layout_height="0dp" 在某种程度上是一种 hack,而 tere 应该是另一种更好的解决方法,但我认为我们仍然需要它,谢谢
  • 它在我的情况下不起作用,因为如果我使用您的代码并将 android:layout_height="wrap_content" 设置为蓝色,我在历史布局中有一个隐藏的列表视图,我们是否有任何解决方法这?我还在问题中包含了 historylinearlayout,并根据您的建议更新了主布局文件
  • 0dp 不是 ConstraintLayout 中的 hack。这意味着“高度是从约束中定义的”。如果是 wrap_content,则表示“高度至少是 wrap 但要考虑约束”。如果您对蓝色的静态高度没问题,请尝试蓝色的“0dp”。它使两个区域均匀。
猜你喜欢
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多