2017-09-28 18 views
1

J'utilise Android Studio pour créer une application calculatrice simple en utilisant le GridLayout. Cependant, il ne s'affiche pas sur mon appareil (oui, il fonctionne sur mon ancienne note5 plutôt que sur un émulateur car il va beaucoup plus vite). Dans le studio Android dans l'onglet de conception du fichier xml, il montre comment je m'attendais à être, mais quand je lance l'application sur mon téléphone, les choses sont un peu bizarre. Je vais poster la capture d'écran de l'application en cours d'exécution sur mon téléphone ainsi qu'une capture d'écran de l'onglet de conception de studio android. Je posterai également mon code XML complet dans mon activity_main.xml.application android ne s'affiche pas comme prévu

My Phone: enter image description here

Android Studio:

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.pvtboromeo.test.MainActivity" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <EditText 
     android:id="@+id/editText" 
     android:background="@android:color/black" 
     android:textColor="@android:color/white" 
     android:layout_row="0" 
     android:layout_column="0" 
     android:layout_columnSpan="4" 
     android:layout_rowSpan="2" 
     android:layout_rowWeight="1" 
     android:layout_columnWeight="1" 
     android:enabled="false" 
     android:gravity="bottom|right" 
     android:paddingRight="15sp" 
     android:paddingBottom="15sp" 
     android:textAlignment="gravity" 
     android:textSize="40sp" 
     android:text="TEST" /> 

    <Button 
     android:id="@+id/buttonC" 
     android:layout_column="0" 
     android:layout_row="2" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:background="@drawable/button1" 
     android:textSize="20sp" 
     android:text="C"/> 

    <Button 
     android:id="@+id/buttonNegative" 
     android:layout_column="1" 
     android:layout_row="2" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:background="@drawable/button1" 
     android:textSize="20sp" 
     android:text="+/-"/> 

    <Button 
     android:id="@+id/buttonPercent" 
     android:layout_row="2" 
     android:layout_column="2" 
     android:layout_rowWeight="1" 
     android:layout_columnWeight="1" 
     android:background="@drawable/button1" 
     android:textSize="20sp" 
     android:text="%" /> 

    <Button 
     android:id="@+id/buttonDivide" 
     android:layout_row="2" 
     android:layout_column="3" 
     android:layout_rowWeight="1" 
     android:layout_columnWeight="1" 
     android:background="@drawable/button2" 
     android:textSize="20sp" 
     android:text="/" /> 

    <Button 
     android:id="@+id/buttonSeven" 
     android:layout_column="0" 
     android:layout_row="3" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:background="@drawable/button1" 
     android:textSize="20sp" 
     android:text="7"/> 

    <Button 
     android:id="@+id/buttonEight" 
     android:layout_column="1" 
     android:layout_row="3" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:background="@drawable/button1" 
     android:textSize="20sp" 
     android:text="8"/> 

    <Button 
     android:id="@+id/buttonNine" 
     android:layout_row="3" 
     android:layout_column="2" 
     android:layout_rowWeight="1" 
     android:layout_columnWeight="1" 
     android:background="@drawable/button1" 
     android:textSize="20sp" 
     android:text="9" /> 

    <Button 
     android:id="@+id/buttonMultiply" 
     android:layout_row="3" 
     android:layout_column="3" 
     android:layout_rowWeight="1" 
     android:layout_columnWeight="1" 
     android:background="@drawable/button2" 
     android:textSize="20sp" 
     android:text="X" /> 

</GridLayout> 

Qu'est-ce que je fais mal?

Répondre

0
android:layout_rowWeight="1" 
android:layout_columnWeight="1" 

Cet attribut est uniquement utilisé dans API21 et supérieur. vous devez utiliser supportv7 GridLayout à la place.
ajouter cette

compile 'com.android.support:gridlayout-v7:26.0.0-alpha1' 

dans votre module de build.gradle. puis changez-vous xml comme ça.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context="com.example.pvtboromeo.test.MainActivity" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <EditText 
     android:id="@+id/editText" 
     android:background="@android:color/black" 
     android:textColor="@android:color/white" 
     app:layout_row="0" 
     app:layout_column="0" 
     app:layout_columnSpan="4" 
     app:layout_rowSpan="2" 
     app:layout_rowWeight="1" 
     app:layout_columnWeight="1" 
     android:enabled="false" 
     android:gravity="bottom|right" 
     android:paddingRight="15sp" 
     android:paddingBottom="15sp" 
     android:textAlignment="gravity" 
     android:textSize="40sp" 
     android:text="TEST" /> 

    <Button 
     android:id="@+id/buttonC" 
     app:layout_column="0" 
     app:layout_row="2" 
     app:layout_columnWeight="1" 
     app:layout_rowWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="C"/> 

    <Button 
     android:id="@+id/buttonNegative" 
     app:layout_column="1" 
     app:layout_row="2" 
     app:layout_columnWeight="1" 
     app:layout_rowWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="+/-"/> 

    <Button 
     android:id="@+id/buttonPercent" 
     app:layout_row="2" 
     app:layout_column="2" 
     app:layout_rowWeight="1" 
     app:layout_columnWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="%" /> 

    <Button 
     android:id="@+id/buttonDivide" 
     app:layout_row="2" 
     app:layout_column="3" 
     app:layout_rowWeight="1" 
     app:layout_columnWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="/" /> 

    <Button 
     android:id="@+id/buttonSeven" 
     app:layout_column="0" 
     app:layout_row="3" 
     app:layout_columnWeight="1" 
     app:layout_rowWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="7"/> 

    <Button 
     android:id="@+id/buttonEight" 
     app:layout_column="1" 
     app:layout_row="3" 
     app:layout_columnWeight="1" 
     app:layout_rowWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="8"/> 

    <Button 
     android:id="@+id/buttonNine" 
     app:layout_row="3" 
     app:layout_column="2" 
     app:layout_rowWeight="1" 
     app:layout_columnWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="9" /> 

    <Button 
     android:id="@+id/buttonMultiply" 
     app:layout_row="3" 
     app:layout_column="3" 
     app:layout_rowWeight="1" 
     app:layout_columnWeight="1" 
     android:background="@color/colorPrimary" 
     android:textSize="20sp" 
     android:text="X" /> 

</android.support.v7.widget.GridLayout> 

avis, c'est android.support.v7.widget.GridLayout pas android.widget.GridLayout, et l'attribut est app:layout_rowWeight="1" pas android:layout_rowWeight="1"

0

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.