代码之家  ›  专栏  ›  技术社区  ›  Phil

Android约束布局不考虑利润?

  •  3
  • Phil  · 技术社区  · 6 年前

    我对 constraintlayout非常陌生,而且我在页边距方面遇到了问题。我有以下 layout file,但我正在尝试获取 layoutNewsEventSiteMimageContainer >strong>to have a 20dp Margin on the Left,while keeping the textView. s to the Left of that Margin.

    我做错什么了????

    <?xml version=“1.0”encoding=“utf-8”?gt;
    <android.support.constraint.constraintlayout(限制布局)
    xmlns:android=“http://schemas.android.com/apk/res/android”
    xmlns:app=“http://schemas.android.com/apk/res-auto”
    android:id=“@+id/layoutNewsEventSiteMcontainer”
    android:layout_width=“匹配父级”
    android:layout_height=“包装内容”
    android:clickable=“真”
    android:focusable=“真”
    android:padding=“20dp”>
    
    
    文本视图
    android:id=“@+id/lblNewSeventSitemHeadline”
    android:layout_width=“包装内容”
    android:layout_height=“包装内容”
    android:text=“文本视图”
    app:layout_constraintricht_tolefto=“@+id/layoutNewsEventSiteMimageContainer”
    app:layout_constraintStart_toStartof=“父级”
    app:layout_constraintop_totopof=“parent”/>
    
    文本视图
    android:id=“@+id/lblNewSeventSiteMcCopy”
    android:layout_width=“包装内容”
    android:layout_height=“包装内容”
    android:layout_margintop=“10dp”
    android:text=“文本视图”
    app:layout_constraintricht_tolefto=“@+id/layoutNewsEventSiteMimageContainer”
    app:layout_constraintStart_toStartof=“父级”
    app:layout_constraintop_tobottomof=“@+id/lblNewSeventSitemHeadline”/>gt;
    
    文本视图
    android:id=“@+id/lblnewseventsitemdatemodified”
    android:layout_width=“包装内容”
    android:layout_height=“包装内容”
    android:text=“文本视图”
    app:layout_constraintricht_tolefto=“@+id/layoutNewsEventSiteMimageContainer”
    app:layout_constraintStart_toStartof=“父级”
    app:layout_constraintop_tobottomof=“@+id/lblnewseventsitemcopy”/>
    
    <android.support.constraint.constraintlayout(限制布局)
    android:id=“@+id/layoutNewsEventSiteMimageContainer”
    android:layout_width=“75dp”
    android:layout_height=“75dp”
    android:background=“@color/backgroundcolor2”
    android:layout_marginstart=“20dp”
    app:layout_constraintBottom_tobottomof=“父级”
    app:layout_constrainted_toendoff=“父级”
    app:layout_constraintop_totopof=“parent”>
    
    </android.support.constraint.constraintlayout>
    
    
    </android.support.constraint.constraintlayout>
    < /代码> 
    
    

    正如您在下面的预览中看到的,它正在切断我的拷贝textviewtextView应保持在layoutNewsEventSiteMimageContainer的左侧,因此包装到下一行。但正如您所见,没有应用任何利润。

    .layoutNewsEventsItemImageContainer有一个20dp左边距,同时保持TextView在那个边缘的左边。

    我做错什么了????

    <?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"    
        android:id="@+id/layoutNewsEventsItemContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusable="true"
        android:padding="20dp">
    
    
        <TextView
            android:id="@+id/lblNewsEventsItemHeadline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            app:layout_constraintRight_toLeftOf="@+id/layoutNewsEventsItemImageContainer"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>
    
        <TextView
            android:id="@+id/lblNewsEventsItemCopy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="TextView"
            app:layout_constraintRight_toLeftOf="@+id/layoutNewsEventsItemImageContainer"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/lblNewsEventsItemHeadline"/>
    
        <TextView
            android:id="@+id/lblNewsEventsItemDateModified"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            app:layout_constraintRight_toLeftOf="@+id/layoutNewsEventsItemImageContainer"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/lblNewsEventsItemCopy"/>
    
        <android.support.constraint.ConstraintLayout
            android:id="@+id/layoutNewsEventsItemImageContainer"
            android:layout_width="75dp"
            android:layout_height="75dp"
            android:background="@color/BackgroundColor2"
            android:layout_marginStart="20dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
        </android.support.constraint.ConstraintLayout>
    
    
    </android.support.constraint.ConstraintLayout>
    

    正如你在下面的预览中看到的,它切断了我的拷贝文本框. 这个文本框应该保持在布局NewsEventSiteMimageContainer因此,包装到下一行。但正如你所看到的,没有应用任何利润。

    3 回复  |  直到 6 年前
        1
  •  0
  •   EvOlaNdLuPiZ    6 年前

    按照建议,将文本视图放置在相对布局中。这将允许您的约束布局与它所知道的内容对齐,而不是与可能更改大小从而导致重叠的文本视图相邻对齐。你可以通过这个得到可预测的行为。

    <ConstraintLayout 
    android:id="@+id/layoutNewsEventsItemContainer"
    ...
    
    <RelativeLayout
    android:id="@+id/container_for_textview"
    android:width="wrap_content"
    android:height="wrap_content">
     <TextView> ...first
     <TextView> ...second
     <TextView> ...third
    </RelativeLayout>
    
    <ConstraintLayout
        android:id="@+id/layoutNewsEventsItemImageContainer"
        ....
        app:layout_constraintEnd_toEndOf="@+id/container_for_textview"
    </ConstraintLayout>
    
    </ConstraintLayout>//NewsEventsItemContainer
    
        2
  •  2
  •   Sukhbir    6 年前

    请用户在下面 xml code以获得正确的结果

    <?xml version=“1.0”encoding=“utf-8”?gt;
    <android.support.constraint.constraintlayout xmlns:android=“http://schemas.android.com/apk/res/android”
    xmlns:app=“http://schemas.android.com/apk/res-auto”
    android:id=“@+id/layoutNewsEventSiteMcontainer”
    android:layout_width=“匹配父级”
    android:layout_height=“包装内容”
    android:clickable=“真”
    android:focusable=“真”
    android:padding=“20dp”>
    
    
    文本视图
    android:id=“@+id/lblNewSeventSitemHeadline”
    android:layout_width=“0dp”
    android:layout_height=“包装内容”
    android:layout_marginright=“20dp”
    android:text=“textviewnsd,n,snfklsdnfknkfnm,nfm,nf,mn,mfn,sdnfm,dnf,mnsd,mfn,sdmfn,dmsnf,sdnf,nsd,fn,sdf,nms,fn,fsd”
    app:layout_constrainted_tostartof=“@id/layoutNewsEventSiteMimageContainer”
    app:layout_constraintStart_toStartof=“父级”
    app:layout_constraintop_totopof=“父级”
    
    /gt;
    
    文本视图
    android:id=“@+id/lblNewSeventSiteMcCopy”
    android:layout_width=“0dp”
    android:layout_height=“包装内容”
    android:layout_marginright=“20dp”
    android:layout_margintop=“10dp”
    安卓:text=“888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888”
    app:layout_constrainted_tostartof=“@id/layoutNewsEventSiteMimageContainer”
    app:layout_constraintStart_toStartof=“父级”
    
    app:layout_constraintop_tobottomof=“@+id/lblNewSeventSitemHeadline”/>gt;
    
    文本视图
    android:id=“@+id/lblnewseventsitemdatemodified”
    android:layout_width=“0dp”
    android:layout_height=“包装内容”
    android:layout_marginright=“20dp”
    android:text=“是”
    app:layout_constrainted_tostartof=“@id/layoutNewsEventSiteMimageContainer”
    app:layout_constraintStart_toStartof=“父级”
    app:layout_constraintop_tobottomof=“@+id/lblnewseventsitemcopy”/>
    
    <android.support.constraint.constraintlayout(限制布局)
    android:id=“@+id/layoutNewsEventSiteMimageContainer”
    android:layout_width=“70dp”
    android:layout_height=“70dp”
    android:background=“@color/colorprimary”
    app:layout_constraintBottom_tobottomof=“父级”
    app:layout_constrainted_toendoff=“父级”
    app:layout_constraintop_totopof=“parent”>
    
    </android.support.constraint.constraintlayout>
    </android.support.constraint.constraintlayout>
    < /代码> 
    
    

    这将帮助您使用约束布局获得以下结果

    希望这会有帮助

    这将帮助您使用 constraint layout

    enter image description here

    希望这会有帮助

        3
  •  1
  •   Ezaldeen sahb    6 年前

    首先,为什么不为容器使用图像视图? 选中此项,只需编辑不接受边距为0dp的文本视图宽度。

         <?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"
    android:id="@+id/layoutNewsEventsItemContainer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="true"
    android:padding="20dp">
    
    
    <TextView
        android:id="@+id/lblNewsEventsItemHeadline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        app:layout_constraintRight_toLeftOf="@+id/layoutNewsEventsItemImageContainer"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
    
    <TextView
        android:id="@+id/lblNewsEventsItemCopy"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="88888888888888888888888888888888888888888888888888888888888888888888888888"
        app:layout_constraintRight_toLeftOf="@+id/layoutNewsEventsItemImageContainer"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/lblNewsEventsItemHeadline" />
    
    <TextView
        android:id="@+id/lblNewsEventsItemDateModified"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:text="TextView"
        app:layout_constraintRight_toLeftOf="@+id/layoutNewsEventsItemImageContainer"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/lblNewsEventsItemCopy" />
    
    <ImageView
        android:id="@+id/layoutNewsEventsItemImageContainer"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="20dp"
        android:background="@color/colorPrimary"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/lblNewsEventsItemCopy"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginRight="16dp"
        android:layout_marginLeft="20dp">
    
    </ImageView>