Autore Topic: Convertire XML in java  (Letto 1182 volte)

Offline Alhazred

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2 Laser ZE550KL
  • Sistema operativo:
    Windows 10 Home 64bit
Convertire XML in java
« il: 28 Febbraio 2012, 22:30:51 CET »
0
Sto cercando di convertire questi 4 elementi di un layout XML in codice java da mettere direttamente in una classe, ma non mi riesce.
Qualcuno potrebbe aiutarmi?
Codice: [Seleziona]
    <TextView
        android:id="@+id/text_route_section_station"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="First station"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ImageView
        android:id="@+id/image_route_section_line"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/text_route_section_station"
        android:contentDescription="@string/text_route_section_line_img_title"
        android:src="@drawable/tstop" />

    <TextView
        android:id="@+id/text_route_section_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/image_route_section_line"
        android:layout_toRightOf="@+id/image_route_section_line"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="5dp"
        android:text="54 min"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/text_route_section_line"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/image_route_section_line"
        android:layout_toRightOf="@+id/text_route_section_time"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="5dp"
        android:text="Line x"
        android:textAppearance="?android:attr/textAppearanceSmall" />

Offline xWOLKx

  • Utente junior
  • **
  • Post: 72
  • Adoro quella citazione western!
  • Respect: +7
    • xWOLKx
    • Wolkrasgt
    • Mostra profilo
    • ZondeIT
  • Dispositivo Android:
    Samsung Galaxy Ace
  • Sistema operativo:
    Windows7
Re:Convertire XML in java
« Risposta #1 il: 28 Febbraio 2012, 22:34:09 CET »
0
Cioè?

Si fa come in Java standard quando crei i layout per i frame. ma non so se era questa la domanda :P

Offline Alhazred

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2 Laser ZE550KL
  • Sistema operativo:
    Windows 10 Home 64bit
Re:Convertire XML in java
« Risposta #2 il: 28 Febbraio 2012, 22:41:01 CET »
0
Considera che sono alla mia prima esperienza con Android.
Per ora quello che ho scritto è
Codice: [Seleziona]
RelativeLayout layout = (RelativeLayout)findViewById(R.id.routes_transfers_list);
TextView textView1 = new TextView(this);
textView1.setLayoutParams(new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
textView1.setId("text_route_section_station1");
layout.addView(textView1);
Che dovrebbe inserire il primo TextView (è corretto?), ora dovrei inserire gli altri elementi, ma non so come impostare le posizioni.

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Convertire XML in java
« Risposta #3 il: 29 Febbraio 2012, 00:33:45 CET »
0
Stai sbagliando la grafica e la relativa posizione viene definita tutta negli xml dei layout. Nel java ti valorizzi gli oggetti solo se li devi usare o ci devi interagire.
Infatti nel metodo oncreate di una qualunque activity inserendo l'istruzione setContentViee(r.layout.nomelayout) visualizzi direttamente ciò che hai inserito nell'xml
« Ultima modifica: 29 Febbraio 2012, 00:36:45 CET da djdedo »

Offline Alhazred

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2 Laser ZE550KL
  • Sistema operativo:
    Windows 10 Home 64bit
Re:Convertire XML in java
« Risposta #4 il: 29 Febbraio 2012, 00:40:27 CET »
0
E' possibile definire la grafica sia tramite XML che in modo programmatico.

Offline Alhazred

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2 Laser ZE550KL
  • Sistema operativo:
    Windows 10 Home 64bit
Re:Convertire XML in java
« Risposta #5 il: 29 Febbraio 2012, 01:07:00 CET »
0
Sono arrivato a questo codice che mi mostra tutti gli elementi, ma mi manca di riuscire ad impostare i margini.
Codice: [Seleziona]
TextView textView1 = new TextView(this);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
textView1.setId(1);
textView1.setText("Stazione1");
layout.addView(textView1,params1);
                          
ImageView imageView1 = new ImageView(this);
imageView1.setImageResource(R.drawable.tstop);
imageView1.setAdjustViewBounds(true);

RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
params2.addRule(RelativeLayout.BELOW,textView1.getId());
imageView1.setId(2);
layout.addView(imageView1, params2);
               
TextView textView2 = new TextView(this);
textView2.setId(3);
RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
params3.addRule(RelativeLayout.BELOW,textView1.getId());
params3.addRule(RelativeLayout.RIGHT_OF,imageView1.getId());

textView2.setText("12:03~12:20");
layout.addView(textView2,params3);
             
TextView textView3 = new TextView(this);
textView3.setId(4);
RelativeLayout.LayoutParams params4 = new RelativeLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
params4.addRule(RelativeLayout.BELOW,textView1.getId());
params4.addRule(RelativeLayout.RIGHT_OF,textView2.getId());
textView3.setText("Nome Linea");
layout.addView(textView3,params4);
Devo impostare un margine di 10dp a sinistra di textView2 e 10dp a sinistra di textImage3

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Convertire XML in java
« Risposta #6 il: 29 Febbraio 2012, 08:23:13 CET »
0
E' possibile definire la grafica sia tramite XML che in modo programmatico.

Possibile è possibile, ma non lo fa quasi nessuno: tutti gli esempi che troverai, tutti i tutorial e tutti i libri ti proporranno quasi sempre la dichiarazione della grafica con file XML. Anche su questo forum il 99% degli esempi e tutorial sono con file XML (anche volendo non potrei rispondere al tuo quesito perchè non ho mai fatto una cosa del genere). Inoltre l'automatismo per cui Android sceglie da solo il layout a seconda della cartella in cui vengono messi i file XML, funziona solamente con i file XML.

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Convertire XML in java
« Risposta #7 il: 29 Febbraio 2012, 09:08:21 CET »
0
Quoto bradipao. Comunque per rispondere alla tua domanda gli oggetti java che ti crei manualmente hanno gli stessi attributi che puoi settare nel file xml quindi nei tuoi oggetti textview dovresti avere un setmargin o qualcosa del genere

Offline Alhazred

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2 Laser ZE550KL
  • Sistema operativo:
    Windows 10 Home 64bit
Re:Convertire XML in java
« Risposta #8 il: 29 Febbraio 2012, 09:53:51 CET »
0
Un setMargin() c'è, ma a quanto pare è riferito all'angolo in alto a sinistra della view, quindi posiziona gli elementi in modo assoluto.
Se uso i vari RIGHT_OF, BOTTOM ecc, per le posizioni relative, poi non posso applicare il margine.

Provo ad aprire un nuovo post spiegando cosa sto cercando di fare, facile che non sono stato capace io di pensare a come si può fare con XML la stessa cosa.

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Convertire XML in java
« Risposta #9 il: 29 Febbraio 2012, 10:14:57 CET »
0
Comunque vedo che il margin da codice non lo puoi settare o almeno non ho trovato nessun metodo che lo faccia. Ho trovato solo il setPadding().
Il discorso è se questa è solo una tua curiosità ok ma se vuoi usare questo modo per sviluppare ti dico subito di imparare ad usare i layout xml per definire la tua interfaccia. Anche perchè in questo modo tieni separata la parte grafica dalla mera logica della tua applicazione e puoi tranquillamente modificare la parte grafica senza toccare il codice java

Offline Alhazred

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus Zenfone 2 Laser ZE550KL
  • Sistema operativo:
    Windows 10 Home 64bit
Re:Convertire XML in java
« Risposta #10 il: 29 Febbraio 2012, 10:27:52 CET »
0
Lo so, infatti per tutto il resto ho usato XML, ma per questa cosa che devo fare non ho idea di dove mettere mano e l'approccio programmatico mi sembrava più semplice.

Ho aperto la nuova discussione dove ho spiegato cosa devo fare, se puoi dacci uno sguardo.