6
votes

Essayer de pousser un bouton au bas de la disposition linéaire dans Android

Je sais que cela peut être très facile à faire en utilisant une mise en page relative, mais je sens ce que je fais est correct et que je devrais me donner le résultat souhaité avec la disposition linéaire elle-même. Mais pour une raison quelconque, lorsque je cours sur cela sur Google Nexus 7 exécutant Android JB 4.1.2, je vois le bouton et la vue texte immédiatement après la liste des éléments de la liste. Si la vue de la liste est vide, je les vois en haut de l'écran. Est-ce que je fais quelque chose de mal?? Voici mon fichier XML xxx


3 commentaires

Que se passe-t-il si vous supprimez le Android: Poidsum Attribut du linearlayout ?


Comme l'a suggéré Ted Hopping, je pense que vous devriez supprimer l'attribut de somme de poids de la disposition linéaire.


J'ai essayé de supprimer le poids ... Rien ne se passe avec ça ... il reste le même ..


5 Réponses :


0
votes

Si vous souhaitez centrer un élément au milieu de l'écran, n'utilisez pas de linearlayout car ils sont destinés à afficher un nombre d'éléments d'une rangée empilée l'une après l'autre.

Utilisez un relativelayout à la place. p>

Remplacer: P>

android:layout_centerInParent="true"


2 commentaires

Comme je l'ai dit, je sais que la mise en page relative fonctionnerait et je l'ai déjà essayée .. Mais j'utilise généralement des mises en page linéaire sur mes applications et j'étais simplement curieuse sur la raison pour laquelle cela ne me donnait pas les résultats souhaités ... Je ne peux donc pas accepter votre solution Ça marche...


On dirait que je dois enfin aller avec la disposition relative ... attendra de voir si quelqu'un d'autre appartient à quelque chose d'intéressant ....



2
votes
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/attachments_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1" >
<ListView
    android:id="@+id/mtg_attachments"
    android:layout_width="fill_parent"
    android:layout_height="70dp"
    android:layout_weight="0.9" />
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_weight="0.1"
    android:gravity="bottom" >
    <Button
        android:id="@+id/attach_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="delete"
        android:textSize="22sp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="attach_warning"
        android:textSize="18sp" />
</LinearLayout>
</LinearLayout>

1 commentaires

Bien que cela puisse fonctionner, je ne veux pas spécifier d'espace pour le bouton et TextView. Ils devraient simplement prendre ce dont ils ont besoin en bas et la liste de réception devrait occuper le reste de l'espace .. donc je ne pense pas que c'est la solution ...



0
votes

Modifiez votre code XML.

à l'aide du Android: Poids_weight Code> Pour régler le pourcentage de votre mise en page. P>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/attachments_list"
    android:layout_width="fill_parent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1"
    android:orientation="vertical">
<ListView
    android:id="@+id/mtg_attachments"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="0.8" />
<Button
    android:id="@+id/attach_delete"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_weight="0.1"
    android:text="@string/delete"
    android:textSize="22sp" />
<TextView
    android:text="@string/attach_warning"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="0.1"
    android:textSize="18sp" />
</LinearLayout>


1 commentaires

Bien que cela puisse fonctionner, je ne veux pas spécifier d'espace pour le bouton et TextView. Ils devraient simplement prendre ce dont ils ont besoin en bas et la liste de réception devrait occuper le reste de l'espace .. donc je ne pense pas que c'est la solution ...



1
votes

sriman s'il vous plaît jeter un oeil à cette réponse et ensuite me dire si cela est utile.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/attachments_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom"
android:orientation="vertical"
android:weightSum="1" >

<ListView
    android:id="@+id/mtg_attachments"
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/attach_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="delete"
        android:textSize="22sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="attach_warning"
        android:textSize="18sp" />
</LinearLayout>

</LinearLayout>


2 commentaires

Mais Sriiman ça marche bien à ma fin. Si ce n'est pas votre solution ce que vous voulez, veuillez élaborer un peu plus


Avez-vous essayé de l'exécuter sur un périphérique ou un émulateur .. La disposition graphique sur Eclipse aurait fière allure, mais elle ne fonctionne pas de la même manière sur l'appareil. Comme je l'ai dit, j'utilise un Google Nexus 7 avec Jelly Bean 4.1.2. Votre environnement pourrait être différent ...



1
votes

Je sais que cette question a déjà une réponse acceptée, mais je vais répondre de toute façon, car aucune solution n'a été trouvée et que c'est le premier résultat que Google m'a donné à propos de ce problème que j'ai également eu.

Il suffit de mettre un Linearlayout (vertical) code> avec mise en page: poids = 1 code> entre les 2 éléments que vous souhaitez diviser. P>

dans votre code, ce serait P>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/attachments_list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:weightSum="1"
              android:orientation="vertical">
    <ListView
        android:id="@+id/mtg_attachments"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0" />

    <LinearLayout
        <!-- You should add this one and remove android:layout_weigth="1" form the listview -->
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
    </LinearLayout>

    <Button
        android:id="@+id/attach_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/delete"
        android:textSize="22sp" />
    <TextView
        android:text="@string/attach_warning"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp" />

</LinearLayout>


3 commentaires

Je ne sais pas si cela fonctionnerait ... La disposition linéaire prendrait tout l'espace et la liste de liste ne prendrait aucune ... Je vais l'essayer quand j'ai une chance ...


Cela commencera exactement comme ça. Mais une vue de liste est censée contenir des éléments, et cette liste de rétention s'étendra lorsque les éléments sont insérés (vous n'avez pas à me faire confiance, essayez-le vous-même). Le seul problème est que le bouton et le texteView se situeront au bas de l'écran et, lorsque la liste les touchera, elles seront repoussées et elles seraient inaccessibles, mais vous pouvez envelopper n'importe quoi dans une vision de défilement pour éviter ce :)


tu as raison! Je parlais de la liste de liste comme un élément général, je n'ai même pas eu d'ASA ListView. Pour que ce soit clair, ListView et Scrollviews ne poussent pas votre élément hors de l'écran. Désolé pour la confusion mon poste précédent aurait pu soulevé.