问题描述
目前,我正在尝试使我的视图的高度和宽度相对于可用空间,因此我的 ui 将更加负责。我遇到的问题是,每当我尝试在父布局中包含此布局(例如,在 fragment_shop 中包含 shop_content)时,我包含的布局的高度和宽度不再起作用。
我做了一个小例子来说明这一点。在此示例中,您可以看到工具栏的高度应为给定高度的 17%。当我在子布局中查看我的设计选项卡时,一切正常,但是在我的 fragment_shopping_cart 中导入此布局时,视图仍然不可见/高度未正确显示。
child_layout
<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"> <!-- Changing this to wrap_content makes weird stuff -->
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/calibrate_btn_background"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/color_primary"
android:clickable="false"
app:layout_constraintHeight_percent="0.17" <!-- Height should take 0.17 -->
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
parent_layout
<layout
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">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".framework.ui.view.fragments.shop.ShoppingCartFragment">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/shopping_cart_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_primary"
app:title="@string/bottom_nav_shopping_cart"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</com.google.android.material.appbar.MaterialToolbar>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_shopping_cart"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toTopOf="@id/shopping_cart_btn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/shopping_cart_toolbar"
tools:listitem="@layout/shopping_cart_list_item" />
<include
android:id="@+id/shopping_cart_btn"
layout="@layout/child_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
它应该是什么样子
外观
我在这里做错了什么?我感谢每一个帮助。注意:我是 Android 响应式 ui 的新手
编辑
由于这个问题越来越难理解,我将尝试用这个例子更好地解释它:我有一个名为 app_standard_checkout_btn 的布局,我在我的几个布局(包括它)中使用了它。此布局包含不同的视图,例如 工具栏(用作背景)、文本视图和其他内容。
目前,工具栏的高度固定为 124dp,这就是问题所在。我不希望高度为 124dp,而是希望包含布局的整个可用高度的 0.15(在某些情况下与 124dp 相同)。这是如何实现的?
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
<variable
name="price"
type="Float" />
<variable
name="btnText"
type="String" />
<variable
name="btnIcon"
type="android.graphics.drawable.Drawable" />
<variable
name="btnTextCapitalized"
type="Boolean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/calibrate_btn_background"
android:layout_width="match_parent"
android:layout_height="124dp" <!-- THIS FIXED VALUE IS BAD -->
android:background="@color/color_btn_gray"
android:clickable="false"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/calibrate_btn_tv_sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard8dpMargin"
android:layout_marginEnd="@dimen/big16dpMargin"
android:text="@string/calibrate_btn_price"
android:textColor="@color/color_text_dark"
android:textSize="@dimen/textHeadlineNormal2"
app:layout_constraintEnd_toStartOf="@+id/shop_item_price"
app:layout_constraintTop_toTopOf="@+id/calibrate_btn_background" />
<TextView
android:id="@+id/shop_item_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{price}"
android:textColor="@color/color_text_blue"
android:textSize="@dimen/textHeadlineNormal2"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/calibrate_btn_tv_sum"
app:layout_constraintEnd_toStartOf="@+id/calibbrate_btn_tv_intern_curr"
app:layout_constraintTop_toTopOf="@+id/calibrate_btn_tv_sum"
tools:text="4800.00" />
<TextView
android:id="@+id/calibbrate_btn_tv_intern_curr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/currency"
android:textColor="@color/color_text_blue"
android:textSize="@dimen/textHeadlineNormal2"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/shop_item_price"
app:layout_constraintEnd_toEndOf="@+id/calibrate_btn_next"
app:layout_constraintTop_toTopOf="@+id/shop_item_price" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/calibrate_btn_tv_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="@string/calibrate_btn_desc"
android:textColor="@color/color_text_gray"
android:textSize="@dimen/textDescriptionNormal4"
app:layout_constraintEnd_toEndOf="@+id/calibrate_btn_next"
app:layout_constraintTop_toBottomOf="@+id/shop_item_price" />
<com.google.android.material.button.MaterialButton
android:id="@+id/calibrate_btn_next"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginStart="@dimen/big16dpMargin"
android:layout_marginEnd="@dimen/big16dpMargin"
android:layout_marginBottom="@dimen/standard8dpMargin"
android:clickable="true"
android:focusable="true"
android:text="@{btnText}"
android:textAllCaps="@{btnTextCapitalized}"
android:textSize="@dimen/textDescriptionNormal1"
android:textStyle="normal"
app:backgroundTint="@color/color_btn_blue"
app:icon="@{btnIcon}"
app:iconGravity="textStart"
app:layout_constraintBottom_toBottomOf="@id/calibrate_btn_background"
app:layout_constraintEnd_toEndOf="@id/calibrate_btn_background"
app:layout_constraintStart_toStartOf="@+id/calibrate_btn_background" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)