2012-10-22 4 views
24

J'ai besoin d'implémenter Dialog pour mon application Android via le code Java, donc je ne peux pas utiliser XML.Comment programmer le poids du bouton

J'ai racine LinearLayout où j'implémente la barre de recherche de gamme, puis j'ai un autre LinearLayout en mise en page racine, avec l'orientation horizontale, où je veux ajouter deux boutons dans la même rangée. Donc, je dois définir le poids à 1, et la largeur à FILL_PARENT et hauteur à WRAP_CONTENT.

Comment puis-je faire cela avec du code Java?

Répondre

42
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
p.weight = 1; 

rangeSeekBar.setLayoutParams(p); 

Je ne suis pas sûr de l'affichage sur lequel vous souhaitez définir les paramètres de disposition. J'ai juste supposé le rangeSeekbar pour montrer un exemple. Changez si vous avez besoin.

Lorsque vous utilisez la mise en page params toujours utiliser le type de la racine param ..

Ex. si vous avez un View que vous souhaitez appliquer params à l'intérieur d'une utilisation RelativeLayoutRelativeLayout.LayoutParams ..

+0

Cela fonctionne, merci. – Zookey

+0

Merci l'homme, ça fonctionne –

14

Vous pouvez passer dans le cadre du constructeur de LinearLayout.LayoutParams: Vouliez-vous dire wrap_content?

LayoutParams param = new LinearLayout.LayoutParams(
         LayoutParams.MATCH_PARENT, 
         LayoutParams.WRAP_CONTENT, 1.0f); 

1.0f est le poids

0

n'utilise pas XML une exigence? Si ce n'est pas le cas, vous pouvez toujours construire votre mise en page en XML, puis utiliser un LayoutInflater au moment de l'exécution pour construire votre hiérarchie de vue et la passer à setView() dans votre boîte de dialogue.

Par exemple:

LayoutInflater inflater = LayoutInflater.from(getActivity()); 
View v = inflater.inflate(R.layout.my_dialog_layout, null); 

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setView(v); 
Questions connexes