簡體   English   中英

Android約束布局跳至屏幕右側

[英]Android Constraint Layout jumping to the right side of the screen

我正在使用Constraint Layout並嘗試放置如下圖所示的內容:

在此處輸入圖片說明

問題是,當我啟動它時, stars上方的最后一個00跳到屏幕的右側。 而且由於它們都已連接在一起,因此其他所有內容都會隨之出現。 但是我認為事情都應該取決於他們左邊的元素,但是他們仍然遵循stars一詞上方的00

由於我已經嘗試解決這一問題已有一段時間了,所以我認為我對Constrain Layout理解不正確。

這是XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/sdvProfilePic"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        fresco:actualImageScaleType="fitCenter"
        fresco:failureImage="@drawable/edit_profile_profile_default_image"
        fresco:failureImageScaleType="fitCenter"
        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintTop_toTopOf="parent"
        fresco:placeholderImage="@drawable/edit_profile_profile_default_image"
        fresco:placeholderImageScaleType="fitCenter"
        fresco:roundAsCircle="true"
        fresco:roundedCornerRadius="0.5dp" />

    <TextView
        android:id="@+id/llPostsCount"
        android:layout_width="wrap_content"
        android:layout_height="26dp"
        android:layout_marginStart="84dp"
        android:layout_marginTop="16dp"
        android:text="@string/_00_text"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="40dp"
        android:layout_height="19dp"
        android:layout_marginStart="76dp"
        android:layout_marginTop="8dp"
        android:text="@string/posts"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintTop_toBottomOf="@+id/llPostsCount" />


    <TextView
        android:id="@+id/tvFollowersCount"
        android:layout_width="wrap_content"
        android:layout_height="26dp"
        android:layout_marginStart="48dp"
        android:layout_marginTop="16dp"
        android:text="00"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintStart_toEndOf="@+id/llPostsCount"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="59dp"
        android:layout_height="19dp"
        android:layout_marginStart="25dp"
        android:layout_marginTop="8dp"
        android:text="@string/followers"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintStart_toEndOf="@+id/textView4"
        fresco:layout_constraintTop_toBottomOf="@+id/tvFollowersCount" />


    <TextView
        android:id="@+id/tvFollowingCount"
        android:layout_width="wrap_content"
        android:layout_height="26dp"
        android:layout_marginStart="48dp"
        android:layout_marginTop="16dp"
        android:text="00"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintStart_toEndOf="@+id/tvFollowersCount"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="57dp"
        android:layout_height="19dp"
        android:layout_marginStart="14dp"
        android:layout_marginTop="8dp"
        android:text="@string/following"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintStart_toEndOf="@+id/textView5"
        fresco:layout_constraintTop_toBottomOf="@+id/tvFollowingCount" />


    <TextView
        android:id="@+id/tvEditProfile"
        android:layout_width="0dp"
        android:layout_height="43dp"
        android:layout_marginBottom="2dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_weight="1"
        android:background="@drawable/selector_rcorner_white_box_lgray_ltgray"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:text="@string/EDIT_PROFILE"
        android:textColor="@color/balck282828"
        android:textSize="14sp"
        android:textStyle="bold"
        fresco:layout_constraintBottom_toBottomOf="parent"
        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintHorizontal_bias="0.0"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintTop_toBottomOf="@+id/textView3"
        fresco:layout_constraintVertical_bias="0.178" />


    <TextView
        android:id="@+id/user_stars"
        android:layout_width="21dp"
        android:layout_height="26dp"
        android:layout_marginEnd="68dp"
        android:layout_marginStart="52dp"
        android:layout_marginTop="16dp"
        android:text="00"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintStart_toEndOf="@+id/tvFollowingCount"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/user_stars_text"
        android:layout_width="32dp"
        android:layout_height="19dp"
        android:layout_marginEnd="57dp"
        android:layout_marginStart="24dp"
        android:layout_marginTop="8dp"
        android:text="@string/userstars"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintStart_toEndOf="@+id/textView3"
        fresco:layout_constraintTop_toBottomOf="@+id/user_stars" />


</android.support.constraint.ConstraintLayout>

我做錯了什么?

編輯

我得到了一個模擬器來截屏我得到的結果的屏幕快照,它看起來不像在電話上那樣糟糕,但是我仍然不想要:

在此處輸入圖片說明

對不起,質量不好,但這是我從電話中得到的:

在此處輸入圖片說明

我建議您將fresco:layout_constraintEnd_toStartOf="@id/some-id"到中間項。 這樣,所有四個項目都可以水平居中。 例如,ID為allPostsCount TextView應該具有allPostsCount fresco:layout_constraintEnd_toStartOf="@id/tvFollowersCount"

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/sdvProfilePic"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        fresco:actualImageScaleType="fitCenter"
        fresco:failureImage="@drawable/edit_profile_profile_default_image"
        fresco:failureImageScaleType="fitCenter"
        fresco:placeholderImage="@drawable/edit_profile_profile_default_image"
        fresco:placeholderImageScaleType="fitCenter"
        fresco:roundAsCircle="true"
        fresco:roundedCornerRadius="0.5dp" 

        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintTop_toTopOf="parent"
        />

    <TextView
        android:id="@+id/llPostsCount"
        android:layout_width="wrap_content"
        android:layout_height="26dp"
        android:layout_marginStart="84dp"
        android:layout_marginTop="16dp"
        android:text="@string/_00_text"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintEnd_toStartOf="@id/tvFollowersCount"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="40dp"
        android:layout_height="19dp"
        android:layout_marginStart="76dp"
        android:layout_marginTop="8dp"
        android:text="@string/posts"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintEnd_toStartOf="@id/textView5"
        fresco:layout_constraintTop_toBottomOf="@+id/llPostsCount" />


    <TextView
        android:id="@+id/tvFollowersCount"
        android:layout_width="wrap_content"
        android:layout_height="26dp"
        android:layout_marginStart="48dp"
        android:layout_marginTop="16dp"
        android:text="00"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintStart_toEndOf="@+id/llPostsCount"
        fresco:layout_constraintEnd_toStartOf="@id/tvFollowingCount"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="59dp"
        android:layout_height="19dp"
        android:layout_marginStart="25dp"
        android:layout_marginTop="8dp"
        android:text="@string/followers"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintStart_toEndOf="@+id/textView4"
        fresco:layout_constraintEnd_toStartOf="@id/textView3"
        fresco:layout_constraintTop_toBottomOf="@+id/tvFollowersCount" />


    <TextView
        android:id="@+id/tvFollowingCount"
        android:layout_width="wrap_content"
        android:layout_height="26dp"
        android:layout_marginStart="48dp"
        android:layout_marginTop="16dp"
        android:text="00"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintStart_toEndOf="@+id/tvFollowersCount"
        fresco:layout_constraintEnd_toStartOf="@id/user_stars"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="57dp"
        android:layout_height="19dp"
        android:layout_marginStart="14dp"
        android:layout_marginTop="8dp"
        android:text="@string/following"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintStart_toEndOf="@+id/textView5"
        fresco:layout_constraintTop_toBottomOf="@+id/tvFollowingCount" />


    <TextView
        android:id="@+id/tvEditProfile"
        android:layout_width="0dp"
        android:layout_height="43dp"
        android:layout_marginBottom="2dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_weight="1"
        android:background="@drawable/selector_rcorner_white_box_lgray_ltgray"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:text="@string/EDIT_PROFILE"
        android:textColor="@color/balck282828"
        android:textSize="14sp"
        android:textStyle="bold"
        fresco:layout_constraintBottom_toBottomOf="parent"
        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintHorizontal_bias="0.0"
        fresco:layout_constraintStart_toStartOf="parent"
        fresco:layout_constraintTop_toBottomOf="@+id/textView3"
        fresco:layout_constraintVertical_bias="0.178" />


    <TextView
        android:id="@+id/user_stars"
        android:layout_width="21dp"
        android:layout_height="26dp"
        android:layout_marginEnd="68dp"
        android:layout_marginStart="52dp"
        android:layout_marginTop="16dp"
        android:text="00"
        android:textColor="@color/balck282828"
        android:textSize="18sp"
        android:textStyle="bold"
        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintStart_toEndOf="@+id/tvFollowingCount"
        fresco:layout_constraintTop_toBottomOf="@+id/sdvProfilePic" />

    <TextView
        android:id="@+id/user_stars_text"
        android:layout_width="32dp"
        android:layout_height="19dp"
        android:layout_marginEnd="57dp"
        android:layout_marginStart="24dp"
        android:layout_marginTop="8dp"
        android:text="@string/userstars"
        android:textColor="@color/regularTextColora5a7aa"
        android:textSize="14sp"
        fresco:layout_constraintEnd_toEndOf="parent"
        fresco:layout_constraintStart_toEndOf="@+id/textView3"
        fresco:layout_constraintTop_toBottomOf="@+id/user_stars" />


</android.support.constraint.ConstraintLayout>

這里有一些建議:

  • 更精確地命名您的觀點。 您不應該使用@+id/textView5類的@+id/textView5 (這是單詞水平列表中的第二個視圖),這樣會使您無法正確構建布局。
  • 您正在為文本視圖指定確切的寬度,以便剪切單詞,如果可以的話,最好使用wrap_content。
  • 您使用精確的邊距將00標簽居中。 如果它在布局編輯器上似乎可以正常運行,則不會在所有設備上都獲得相同的結果,尤其是在較大的設備上。 您寧願使用約束來使項目居中
  • 要構建您的布局,我會在標簽上使用一個打包的Horizo​​ntal鏈(因為它們更大) https://developer.android.com/training/constraint-layout/#constrain-chain 然后,根據相應的標簽將數字居中。

這是您根據最后一條建議可以得到的結果: 包裝水平鏈

繼續嘗試,我確定您可以做到!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM