2017-06-07 16 views
7

Czy istnieje możliwość (w ConstraintLayout), aby widok wzrósł tylko tak długo, jak długo jest miejsce na inny widok po jego prawej stronie?Ogranicz szerokość w ConstraintLayout innym widokiem

Przypadkiem użycia jest posiadanie value i unit TextViews obok siebie. Tekst value powinien rosnąć tak długo, jak długo jest miejsce na unit. Jeśli nie ma wystarczająco dużo miejsca, należy wyciąć value.

ConstraintLayout

Próbowałem go łańcuchami i kilka innych rzeczy, ale nie może zrobić to. Model value nie przestaje rosnąć, a następnie unit nie jest już widoczny. Oto aktualny kod:

<TextView 
    android:id="@+id/value" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginStart="8dp" 
    android:lines="1" 
    app:layout_constraintBaseline_toBaselineOf="@+id/unit" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintHorizontal_chainStyle="packed" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toLeftOf="@id/unit" 
    tools:text="12533939532" /> 

<TextView 
    android:id="@+id/unit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    app:layout_constraintHorizontal_chainStyle="packed" 
    app:layout_constraintLeft_toRightOf="@id/value" 
    app:layout_constraintRight_toRightOf="parent" 
    tools:text="km" /> 

Odpowiedz

10

tak można za pomocą match_constraint (0DP), która równa match_parent dla innego układu, więc za pomocą match_constraint możemy ustawić wagę na pierwszy rzut oka, które będą zajmuje całą dostępną przestrzeń także dodać

app:layout_constraintWidth_default="wrap" 

zastosować domyślne zachowanie szerokości jak wrap_content

tutaj jest kod ze zmianą

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




     <TextView 
      android:id="@+id/value" 
      android:layout_width="0dp" 
      app:layout_constraintWidth_default="wrap" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="8dp" 
      android:lines="1" 
      app:layout_constraintBaseline_toBaselineOf="@+id/unit" 
      app:layout_constraintHorizontal_bias="0.0" 
      app:layout_constraintHorizontal_chainStyle="packed" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toLeftOf="@id/unit" 
      tools:text="12533939zx532" /> 

     <TextView 
      android:id="@+id/unit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginStart="8dp" 
      app:layout_constraintLeft_toRightOf="@id/value" 
      app:layout_constraintRight_toRightOf="parent" 
      tools:text="km" /> 
    </android.support.constraint.ConstraintLayout> 

dostał wyjaśnień ze strony kontroluje

Lepszy widok wymiar

nową dostępną zachowań, gdy wymiar jest ustawiony na 0DP (MATCH_CONSTRAINT). Tak jak poprzednio, oba punkty końcowe (lewy/prawy lub górny/dolny) muszą być połączone z celami.

layout_constraintWidth_default = spread (domyślnie, podobny do poprzedniego zachowania) layout_constraintWidth_default = owinąć layout_constraintHeight_default = rozprzestrzeniać layout_constraintHeight_default = owinąć

Wrap zapewnia znaczącą nowe zachowanie, z widżet rozmiaru jakby wrap_content użyto , ale ograniczone przez połączone ograniczenia. Widżet nie wzrośnie zatem poza punkty końcowe.

http://tools.android.com/recent/constraintlayoutbeta5isnowavailable

+0

Naprawdę nie dostałem twojego wyjaśnienia, ale kod działa, dziękuję! – noongiya95

+0

yeh, główna rzecz, która layout_constraintWidth_default została wprowadzona w ConstraintLayout 1.0, aby rozwiązać problem wrap_content, który dostałeś i nie ma żadnej oficjalnej dokumentacji dla tego samego. – Pavan

+0

@MariusBoepple zaktualizował niektóre opisy może być pomocne – Pavan

Powiązane problemy