2010-08-23 4 views
1

Je veux afficher EditText et Button en une ligne. Mais la taille du bouton est le fixe à quelques pixels. Je voulais obtenir la largeur de Button programatically afin que je puisse régler la largeur de EditText à changer l'orientation de mon fichier XML vertical ou horizontal est la suivanteComment obtenir la largeur du bouton dans android

<LinearLayout 
    android:id="@+id/middleLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    > 
<EditText 
    android:layout_height="50px" 
    android:layout_width="wrap_content" 
    android:id="@+id/searchBox" 
    android:layout_marginTop="2px" 
    android:visibility="visible" 
    android:singleLine="true" 
    android:hint="Enter Zip Code, City &amp; State" 
    /> 
<Button 
    android:layout_height="wrap_content" 
    android:layout_width="20px" 
    android:id="@+id/searchBtn" 
    android:visibility="visible" 
    android:layout_marginTop="3px" 
    android:text="Search" 
    /> 
</LinearLayout> 

Je calculais par le code suivant.

searchBox = (EditText) findViewById(R.id.searchBox); 
searchbutton = (Button) findViewById(R.id.searchBtn); 
int searchIconWidth = searchbutton.getWidth(); 
searchBox.setWidth(getting_screen_width() - searchIconWidth); 

pour le calcul de la largeur d'écran I ont utilisé suivant

private int getting_screen_width() 
    { 
    DisplayMetrics dm = null; 
    dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    String width = ""+dm.widthPixels ; 
    dm = null; 
     return Integer.parseInt(width); 
    } 

Mais quand je lance au-dessus du code que EditText prend toute la largeur & bouton de recherche n'apparaît pas. Quel peut être le problème pour obtenir la largeur du bouton en pixels.

S'il vous plaît aidez-moi. Merci d'avance.

+0

Je pense que si la largeur est un problème. définir une même valeur pour les deux. – Praveen

Répondre

0

Vous voudrez peut-être utiliser une autre mise en page pour le paysage. Vérifiez this link.

Fondamentalement, vous pouvez avoir une deuxième mise en page pour paysage créant un nouveau dossier dans le /res/ chemin appelé layout-land. Placez votre nouvelle mise en page avec le même nom et Android s'occupera du reste.

+0

vous avez raison, mais mon problème est, quand j'essaye d'imprimer la largeur du bouton, il me montre 0 dans Logcat. Le EditText est donc en plein écran. Je me demande à propos de la largeur donnée en xml à ce bouton est traité comme 0px dans le programme. – Ashay

+0

Où placez-vous cette ligne Log? – Macarse

+0

J'imprime la valeur de la variable searchIconWidth. Je n'ai pas cela dans ma partie de débogage non affichée ici. Log.d ("ButtonWidth", "" + searchIconWidth); Mais vous pouvez placer après cette ligne int searchIconWidth = searchbutton.getWidth(); – Ashay

Questions connexes