Je vous suggère d'utiliser un ConstraintLayout. Est le meilleur moyen de faire des dispositions avec beaucoup de vue. C'est aussi le meilleur moyen d'avoir de bonnes performances (et il faut moins de temps pour le programmer).
Plus vous avez vu la vue, plus lentement travaille votre activité.
Pour une simple mise en page d'une calculatrice, vous pouvez essayer de voir mon code:
<?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"
tools:context="com.example.moris.calcolatricelayoutconstraint.MainActivity">
<TextView
android:id="@+id/textView24"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="/"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView5"
app:layout_constraintRight_toLeftOf="@+id/textView6"
app:layout_constraintTop_toBottomOf="@+id/textView21" />
<TextView
android:id="@+id/textView25"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="x"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/textView22" />
<TextView
android:id="@+id/textView26"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="="
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView3"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView23" />
<TextView
android:id="@+id/textView21"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="-"
app:layout_constraintBottom_toTopOf="@+id/textView24"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView5"
app:layout_constraintRight_toLeftOf="@+id/textView6"
app:layout_constraintTop_toBottomOf="@+id/textView18" />
<TextView
android:id="@+id/textView22"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="+"
app:layout_constraintBottom_toTopOf="@+id/textView25"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/textView19" />
<TextView
android:id="@+id/textView23"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="%"
app:layout_constraintBottom_toTopOf="@+id/textView26"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView3"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView20" />
<TextView
android:id="@+id/textView18"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="8"
app:layout_constraintBottom_toTopOf="@+id/textView21"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView5"
app:layout_constraintRight_toLeftOf="@+id/textView6"
app:layout_constraintTop_toBottomOf="@+id/textView15" />
<TextView
android:id="@+id/textView19"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="7"
app:layout_constraintBottom_toTopOf="@+id/textView22"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/textView16" />
<TextView
android:id="@+id/textView20"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="9"
app:layout_constraintBottom_toTopOf="@+id/textView23"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView3"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView17" />
<TextView
android:id="@+id/textView15"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="5"
app:layout_constraintBottom_toTopOf="@+id/textView18"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView5"
app:layout_constraintRight_toLeftOf="@+id/textView6"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
<TextView
android:id="@+id/textView16"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="4"
app:layout_constraintBottom_toTopOf="@+id/textView19"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/textView5" />
<TextView
android:id="@+id/textView17"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="6"
app:layout_constraintBottom_toTopOf="@+id/textView20"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/textView3"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView6" />
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toTopOf="@+id/textView3"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="6dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="6dp"
android:layout_marginStart="8dp"
android:ems="10"
android:hint="Insert numbers"
android:inputType="textPersonName"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0.0" />
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="2"
app:layout_constraintBottom_toTopOf="@+id/textView15"
app:layout_constraintLeft_toRightOf="@+id/textView5"
app:layout_constraintRight_toLeftOf="@+id/textView6"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView5"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="1"
app:layout_constraintBottom_toTopOf="@+id/textView16"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView6"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/border"
android:gravity="center"
android:text="3"
app:layout_constraintBottom_toTopOf="@+id/textView17"
app:layout_constraintLeft_toRightOf="@+id/textView3"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
Pour faire de la frontière, j'ai créé cet appel de fichier xml « frontière », en ressources drawable , et l'utiliser en arrière-plan de la TextView:
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:color="@color/colorPrimaryDark"
android:width="2dp"/>
<corners
android:radius="5dp"/>
Si vous wa nt en savoir plus sur ConstraintLayout: https://developer.android.com/training/constraint-layout/index.html
En particulier, regardez la vidéo 4.