【问题标题】:Dealing with Imageview & guidelines处理 Imageview 和指南
【发布时间】:2020-05-15 03:29:36
【问题描述】:

我正在创建一个问答游戏,并努力在我声明的准则中限制我的 Imageview 的图像。

在 Android Studio 预览中,一切似乎都正常且符合预期。下面是这个预期结果的打印屏幕:

但是当我在模拟器中运行应用程序(AVD Manager 上的 Pixel 3 XL API 29)时,我得到以下结果:

图像不受垂直参考线的限制,或者在预览显示时,垂直参考线永远不会被应用。我试过在不同的设备上运行它,结果总是一样的。

这是我的 XML 代码:

<?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:background="#427e83"
    tools:context=".level1">

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/level1completion"
        android:layout_width="342dp"
        android:layout_height="32dp"
        android:layout_marginTop="32dp"
        android:autofillHints=""
        android:fontFamily="@font/sunrise_international"
        android:textAlignment="center"
        android:textSize="36sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/level1answer" />

    <EditText
        android:id="@+id/level1tail1answer"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="32dp"
        android:background="@drawable/rounded_corners_edittext"
        android:ems="10"
        android:fontFamily="@font/sunrise_international"
        android:hint="@string/type_your_answer"
        android:inputType="textPersonName"
        android:textColor="@android:color/darker_gray"
        android:textColorHint="#45484b"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintStart_toStartOf="@+id/guideline"
        app:layout_constraintTop_toBottomOf="@+id/level1imagetoguess" />

    <ImageView
        android:id="@+id/level1tail1imagetoguess"
        android:contentDescription="@string/correct_answer"
        android:src="@drawable/my_picture"
        android:scaleType="fitStart"
        android:adjustViewBounds="true"
        app:layout_constraintDimensionRatio="1:1"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintStart_toStartOf="@+id/guideline"
        app:layout_constraintTop_toTopOf="@+id/guideline3" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.18" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.9155" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.055" />

</androidx.constraintlayout.widget.ConstraintLayout>

我无法理解这里出了什么问题,即使我已经阅读了文档。 作为最后的手段,我尝试使用以下参数的组合:

  • layout_constraintDimensionRatio
  • 刻度类型
  • 调整ViewBounds
  • layout_width
  • layout_height

没有运气。

任何帮助将不胜感激!

谢谢!

【问题讨论】:

  • 感谢此链接埃利亚斯!我的描述应该更具体:我的主要问题不是“缺口”覆盖了图像(至少现在......您的链接将帮助我解决这个问题),而是图像不受垂直限制指导方针,而预览显示其他。帖子已编辑。

标签: android xml imageview android-constraintlayout constraintlayout-guideline


【解决方案1】:

您完成了大部分工作,但您的布局有什么问题:

  • 您在视图中使用了固定尺寸 (android:layout_width="342dp"),并且由于不同的手机具有不同的尺寸,因此在您的预览中看起来不错的内容在另一台设备上看起来会不一样。

    李>
  • 您永远不会拥有 ID 为 level1answer 的视图,因此您的其他视图不能被限制为不存在的视图

固定布局:

<EditText
    android:id="@+id/level1tail1answer"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintHeight_percent="0.1"
    android:ems="10"
    android:hint="type_your_answer"
    android:inputType="textPersonName"
    android:textColor="@android:color/darker_gray"
    android:textColorHint="#45484b"
    app:layout_constraintEnd_toStartOf="@+id/guideline2"
    app:layout_constraintStart_toStartOf="@+id/guideline"
    app:layout_constraintTop_toTopOf="@+id/guideline4" />

<ImageView
    android:id="@+id/level1tail1imagetoguess"
    android:adjustViewBounds="true"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:contentDescription="correct_answer"
    android:scaleType="fitStart"
    app:layout_constraintBottom_toTopOf="@+id/guideline4"
    app:layout_constraintDimensionRatio="1:1"
    app:layout_constraintEnd_toStartOf="@+id/guideline2"
    app:layout_constraintStart_toStartOf="@+id/guideline"
    app:layout_constraintTop_toTopOf="@+id/guideline3" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.18" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.9155" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.055" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.6" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintHeight_percent="0.1"
    android:text="some text"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/guideline2"
    app:layout_constraintStart_toStartOf="@+id/guideline"
    app:layout_constraintTop_toBottomOf="@+id/level1tail1answer" />

看起来像这样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2019-07-13
    • 1970-01-01
    相关资源
    最近更新 更多