Używam ConstraintLayout
w mojej aplikacji do tworzenia układu aplikacji. Próbuję a Utwórz ekran wheren jedna EditText
i Button
powinna być w centrum, a Button
powinna być niższa od EditText
z marginTop tylko 16dp.
Oto mój układ i zrzut ekranu, jak teraz wygląda.
activity_authenticate_content.xml
<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"
android:paddingLeft="16dp"
android:paddingRight="16dp"
tools:context="com.icici.iciciappathon.login.AuthenticationActivity">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_client_id"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/authenticate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_auth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/client_id_input_layout"
app:layout_constraintRight_toRightOf="@id/client_id_input_layout"
app:layout_constraintTop_toTopOf="@id/client_id_input_layout" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.Guideline
? Czy musimy korzystać za każdym razem, gdy korzystamyConstraintLayout
?layout_constraintGuide_percent
?Guideline
jest tylko niewidzialnym przedmiotem, na którym możesz zakotwiczyć swoje poglądy.layout_constraintGuide_percent
jest procentem w rodzicu. Tutaj 0,5 to 50% wysokościTextInputEditText
i jedenButton
. Chcę umieścić je na środku ekranu. Ale na razie nie jest to pastebin.com/iXYtuXHg oto zrzut ekranu dropbox.com/s/k7997q2buvw76cp/q.png?dl=0LinearLayout
środku i wyśrodkować.Jest prostszy sposób. Jeśli ustawisz ograniczenia układu w następujący sposób, a tekst EditText ma stały rozmiar, zostanie wyśrodkowany w układzie ograniczenia:
Para lewa / prawa centruje widok w poziomie, a para góra / dół centruje go w pionie. Dzieje się tak, ponieważ gdy ustawisz lewe, prawe lub górne, dolne ograniczenia większe niż sam widok, widok zostanie wyśrodkowany między dwoma ograniczeniami, tzn. Odchylenie zostanie ustawione na 50%. Możesz także przesuwać widok w górę / w dół lub w prawo / w lewo, ustawiając własne nastawienie. Zagraj z nim trochę, a zobaczysz, jak to wpływa na pozycję widoków.
źródło
app:layout_constraintCenter_in="parent"
byłoby znacznie lepiej. Ale jak zawsze Google tego nie zapewnił.Rozwiązanie z wytyczną działa tylko w tym konkretnym przypadku z jednowierszowym tekstem EditText. Aby działało w edytorze wielowierszowym, należy użyć łańcucha „spakowanego”.
Oto jak to wygląda:
Możesz przeczytać więcej o korzystaniu z łańcuchów w następujących postach:
źródło
Możesz wyśrodkować widok jako procent wielkości ekranu.
W tym przykładzie użyto 50% szerokości i wysokości:
Dokonano tego przy użyciu ConstraintLayout w wersji 1.1.3. Nie zapomnij dodać go do swoich zależności w stopniu i zwiększyć wersję, jeśli jest tam nowa wersja:
źródło
dodaj te tagi do swojego widoku
i możesz kliknąć prawym przyciskiem myszy w trybie projektowania i wybrać środek.
źródło
możesz użyć layout_constraintCircle dla widoku środkowego wewnątrz ConstraintLayout.
z ograniczeniem Okrążenie do rodzica i zerowym promieniem możesz ustawić widok jako środek rodzica.
źródło