70 votes

Définir la position / taille de l'élément d'interface utilisateur en tant que pourcentage de la taille de l'écran

Je suis en train de travailler si il est possible d'utiliser le pourcentage de postes/tailles lors de la création d'un modèle. Ce que je veux, c'est quelque chose comme cela...

^
|
|
| 68%
|
|
v
Gallery (height equivalent of 16% total screen size)
^
| 16%
v

Je suis en essais sur un dispositif qui, dans le paysage a un affichage de 800 x 480 pixels réels et je suis actuellement en forçant avec le suivant...

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" > 
    <Gallery 
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="80px"
        android:layout_marginTop ="320px"
    />
</RelativeLayout>

Évidemment, je ne veux pas coder en dur fixe px de parts, mais je ne peux pas utiliser 68% ou 0.68 pour layout_marginTop (par exemple). J'ai regardé dp de parts, mais je ne suis pas sûr si je peux le faire de cette manière que ce soit.

Je dois admettre conception de l'INTERFACE utilisateur est un point faible de la mienne donc, tous les conseils seront reçues avec reconnaissance.

EDIT: Pour référence future si quelqu'un est à la recherche d'une réponse similaire, à la suite d'Alan Moore suggestion j'ai le texte suivant exactement comment je le veux...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="@drawable/bground"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0.68"
        android:background="@android:color/transparent"
    />
    <Gallery 
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.16"
    />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0.16" 
        android:background="@android:color/transparent"
    />
</LinearLayout>

J'ai réussi à trouver quelques autres exemples de l'utilisation de layout_weight et a décidé de mettre la TextView hauteur 0dp et également utilisé des flotteurs pour le poids. Génial de travailler. :)

68voto

Alan Moore Points 3772

Je pense que ce que vous voulez, c'est définir l'androïde: layout_weight,

http://developer.android.com/resources/tutorials/views/hello-linearlayout.html

quelque chose comme ceci (je mets simplement des vues de texte au-dessus et au-dessous comme espaces réservés):

   <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="68"/>
    <Gallery 
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

        android:layout_weight="16"
    />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="16"/>

  </LinearLayout>
 

16voto

joseph_morris Points 467

Pour TextView et ses descendants (par exemple, Button), vous pouvez obtenir la taille d'affichage à partir de WindowManager, puis définir la hauteur de TextView comme étant une fraction de celle-ci:

 Button btn = new Button (this);
android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
btn.setHeight((int)(display.getHeight()*0.68));
 

1voto

Finn Larsen Points 1650

Regarde ça:

http://developer.android.com/reference/android/util/DisplayMetrics.html

Vous pouvez obtenir la hauteur de l'écran et il est simple de calculer 68% de l'écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X