2014-06-27 7 views
0

Je suis nouveau dans android, j'ai un MainActivity.java dans src et activity_main.xml dans layout. Si je crée un bouton dans activity_main.xml, puis-je définir ou obtenir les valeurs des propriétés de bouton dans le xml à MainActivity.java?Obtention & réglage des valeurs de xml dans android

comment peut changer la propriété de popupWindow comme hieght, largeur par java

+0

utiliser votre upvotes si quelqu'un vous a aidé. C'est ainsi que fonctionne le site. voir [ceci] (http://stackoverflow.com/tour) – SMR

Répondre

1

Oui, vous pouvez modifier les propriétés de vos View s définies dans un fichier XML.

Pour cela, vous devez mettre une pièce d'identité dans le View que vous souhaitez modifier dans votre activity_main.xml, par exemple:

<Button 
    android:id="@+id/myButton" 
    ... /> 

Ensuite, dans votre classe MainActivity, vous pouvez obtenir ce Button avec la méthode suivante :

Button myButton = (Button) findViewById(R.id.myButton); 

Maintenant, vous pouvez ajouter toutes les propriétés souhaitées dans cette vue. Vous pouvez par exemple définir son texte:

myButton.setText("Click me!"); 
1

Oui, vous pouvez.

Obtenez le bouton:

Button button = findViewById(R.id.yourButtonId); 

propriétés (quelques Get exemples):

int x = button.getX; 
int marginTop = ((ViewGroup.LayoutParams) button.getLayoutParams()).topMargin; 

Set Porperties:

button.setX = someValue; 
((ViewGroup.LayoutParams) button.getLayoutParams()).topMargin = someValue; 
+0

merci. La même méthode est-elle élaborée dans PopupWindow? – JithinMechery

+0

si vous avez la vue (avec findViewbyId) vous pouvez utiliser les setters et les getters dans toutes les classes – TheOnlyJakobob

+0

Je veux juste ajouter une méthode qui est utilisée pour changer n'importe quelle propriété comme hieght, width, ou comme ceci, public void setPopupWindowHieght (PopupWindow pwin, int h) \t \t { \t \t ((ViewGroup.LayoutParams) pwin.getLayoutparams()). Hieght = h; J'ai une erreur "La méthode getLayoutparams() est indéfinie pour le type PopupWindow" Pouvez-vous m'aider? – JithinMechery

1

Oui, vous pouvez. Tous les attributs XML d'une vue ont une méthode java équivalente.

par exemple, vous pouvez modifier le texte en XML en utilisant

android:text="Hello World!" 

vous pouvez même manière, modifier le texte Au cours de l'exécution en utilisant le code java comme ceci:

textView1.setText("Hello World!"); 

les deux donnent le même résultat .

[NOTE] rappeler que le code XML est prédéfini au moment de la compilation, mais le code java prend effet à exécution. C'est seulement après avoir exécuté l'application dans l'appareil/émulateur. Vous ne pouvez donc pas voir les modifications apportées par le code java dans l'éditeur d'interface utilisateur lui-même. Le code Java ne reflète que pendant l'exécution.

1

Dans le fichier Xml - vous pouvez définir la valeur pour le bouton comme,

<Button 
     android:id="@+id/button_Save" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_weight="1" 
     android:text="Save" 
     /> 

Pour obtenir les valeurs des touches dans un fichier Java peuvent alors utiliser comme ça,

Button btn; 
btn = (Button)findViewById(R.id.button_Save); 

btn.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
String buttonText = btn.getText().toString(); 
Toast.makeText(MainActivity.this,"Button text is:" +buttonText,Toast.LENGTH_LONG).show(); 



     } 
    }); 
1

Vous pouvez obtenir le propriétés définies en XML de manière dynamique. Mais vous ne pouvez pas écrire à ces fichiers xml (par exemple la couleur, des chaînes, dimen etc)

Exemple pour définir les propriétés des boutons

<Button 
       android:id="@+id/seeLater" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/btn_message" 
       android:fontFamily="sans-serif-condensed" 
       android:gravity="center" 
       android:text="@string/dialog_read_later" 
       android:textColor="@color/White" 
       android:textSize="@dimen/settings_tile_heading_size" 
       android:focusableInTouchMode="true"/> 

Après les fichiers xml sous le dossier res pour définir les propriétés

Colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="White">#ffffff</color> 
</resources> 

dimens.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="settings_tile_heading_size">13sp</dimen> 
</resources> 

strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string name="dialog_read_later">LATER</string> 
</resources> 
Questions connexes