布局问题,并为我提供了在所有设备上扩展的解决方案

时间:2019-04-01 13:14:37

标签: android

我在某些设备上的图像很好,但是在某些小型显示屏手机中,图像的位置不在范围内

帮我解决PLS

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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">

        <ImageView
            android:id="@+id/imageView6"
            android:layout_width="198dp"
            android:layout_height="182dp"
            android:layout_marginStart="107dp"
            android:layout_marginTop="77dp"
            android:layout_marginEnd="107dp"
            android:layout_marginBottom="472dp"
            android:src="@drawable/hi"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:contentDescription="@string/todo" />
</android.support.constraint.ConstraintLayout>

enter image description here

6 个答案:

答案 0 :(得分:0)

通过此代码替换您的xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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">


    <ImageView
            android:id="@+id/imageView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/Hi"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.06"/>
</android.support.constraint.ConstraintLayout>

答案 1 :(得分:0)

当您在视图上使用固定大小时,您的屏幕将无响应,因为不同的设备具有不同的屏幕大小,某些屏幕上看起来不错的画面不一定看起来不错,而另一屏幕大小不同的画面。

要解决此问题-不要在视图上使用固定大小-可能会导致屏幕无响应,请对某些constrainLayout使用guidlines  代替:

<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">




<ImageView
    android:id="@+id/imageView6"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:contentDescription="todo"
    android:src="@drawable/common_full_open_on_phone"
    app:layout_constraintBottom_toTopOf="@+id/guideline2"
    app:layout_constraintEnd_toStartOf="@+id/guideline4"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="@+id/guideline5"
    app:layout_constraintTop_toTopOf="@+id/guideline3"
    app:layout_constraintVertical_bias="0.0" />

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

<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.2"  />

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

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

答案 2 :(得分:0)

使用此库https://github.com/intuit/sdp。它提供了一个称为sdp(可缩放dp)的新缩放单位,它将根据您的设备自动缩放视图。

答案 3 :(得分:0)

只需删除所有边距和填充(它们最好用于约束布局中较小的详细更改) 并同时使用两者

app:layout_constraintHorizo​​ntal_bias =“ 0” app:layout_constraintVertical_bias =“ 0”

偏差用于将您的图像或视图以%步进在显示器上移动,因此它将获取设备的显示器并根据您设置的%偏差应用图​​像。

与他们一起玩,您将找到解决方案

我猜0.5水平和0.1垂直就可以了

您的ImageView可能看起来像这样

<ImageView
        android:id="@+id/imageView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/Hi"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.1"
        app:layout_constraintHorizontal_bias="0.5"/>

答案 4 :(得分:0)

在布局中直接使用dp会使屏幕尺寸不同的情况变得更糟。

您可以使用以下库为组件提供灵活的大小 https://github.com/intuit/sdp

,您可以使用以下尺寸:

android:padding="@dimen/_8sdp

对于文本大小,请使用以下库。 https://github.com/intuit/ssp

并将其用于文本大小

android:textSize="@dimen/_10ssp"

答案 5 :(得分:0)

将代码更改为此,并发生app:layoutconstraintHorizo​​ntal_bias =“ 0.5” app:layoutconstraintVertical_bias =“ 0.1” enter image description here