gpt4 book ai didi

android - ConstraintLayout 在 Android L 设备上表现异常

转载 作者:行者123 更新时间:2023-11-29 22:55:54 27 4
gpt4 key购买 nike

我将 ConstraintLayout 用于对话框 fragment 的布局。一切都很好,除了在带有 Android Lollipop 的设备上。在那里,布局会自动在顶部添加一个 textView(id/title),甚至没有在布局中声明。当我运行 Layout Inspector 时,我得到以下结果:

  • Android L

enter image description here

  • 在带有 Android P 的模拟器上

enter image description here

这里我不明白为什么会这样。这是我的布局的 xml 代码。感谢您的帮助。

<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/black_overlay"
android:layout_width="325dp"
android:layout_height="wrap_content">

<TextView
android:id="@+id/tvTitle"
style="@style/TextAppearance.Black"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="25dp"
android:maxLines="2"
android:text="@string/signup_alert_title"
app:layout_constraintEnd_toStartOf="@+id/ivDismissDialog"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<ImageView
android:id="@+id/ivDismissDialog"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginTop="19dp"
android:layout_marginEnd="19dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_cancel_deselected" />

<TextView
android:id="@+id/tvSignupDetails"
style="@style/TextAppearance.Regular"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:text="@string/signup_alert_details"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitle" />

<Button
android:id="@+id/signupButton"
style="@style/Button.FilledButton"
android:layout_width="208dp"
android:layout_height="wrap_content"
android:layout_marginStart="62dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="55dp"
android:text="@string/signup"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvSignupDetails" />

<Button
android:id="@+id/loginButton"
style="@style/Button.FlatButton"
android:layout_width="208dp"
android:layout_height="wrap_content"
android:layout_marginStart="62dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="55dp"
android:layout_marginBottom="24dp"
android:text="@string/login"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/signupButton" />
</androidx.constraintlayout.widget.ConstraintLayout>

最佳答案

这基本上与主题相关。在 android 中,大多数情况下的 Root View 是 FrameLayout 并且使用像 Theme.AppCompat.Light.DarkActionBar 这样的主题可以将额外的 View 添加到 ViewGroup 显示带有标题的操作栏。

典型的默认 actionBar 代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/title"
android:text="YOUR ACTIVITY TITLE"
android:textColor="#ffffff"
android:textSize="24sp" />
</LinearLayout>

这只是意味着我们可以使用如下引用访问预定义的 TextView (如果存在):

View decor = getWindow().getDecorView();
TextView title = (TextView) decor.findViewById(getResources().getIdentifier("title", "id", "android"));

在其他方面,为了整体阅读操作栏或 TextView ,我们使用不需要操作栏的不同应用主题,或者我们将以下选项添加到样式下应用的父/基本主题:

<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>

关于android - ConstraintLayout 在 Android L 设备上表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422421/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com