Autore Topic: Come posizionare un componente tramite java  (Letto 663 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Come posizionare un componente tramite java
« il: 26 Settembre 2010, 20:29:57 CEST »
0
Devo posizionare un'immagine con id=freccia_dx alla destra di un coponente X1 se si verifica una determinata condizione altrimenti lo devo mettere alla sinistra del componente Y1
In particolare nella mia MyActivity.java devo impostare queste due proprietà:
Nel primo caso:

alignBottom="@+id/X1"
toRightOf="@+id/X1"

nel secondo caso:

alignBottom="@+id/Y1"
toLeftOf="@+id/Y1"

Ho scritto questo codice

//recupero il riferimento all'immagine che devo posizionare
ImageView imageView = (ImageView)findViewById(R.id.freccia_dx);

//definisco i parametri
LayoutParams params = new LayoutParams(? ? ? ? ? ? ?);

//imposto la posizione
imageView.setLayoutParams(params);

non so come si scrive il codice per definire i parametri

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Come posizionare un componente tramite java
« Risposta #1 il: 26 Settembre 2010, 21:07:37 CEST »
0
Prova a fare

Codice (Java): [Seleziona]
componente.addRule(RelativeLayout.ALIGN_BOTTOM,R.id.X1);
E così via.

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come posizionare un componente tramite java
« Risposta #2 il: 26 Settembre 2010, 23:12:03 CEST »
0
non c'è il metodo addRule per una ImageView
sto usando android con api 1.6

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come posizionare un componente tramite java
« Risposta #3 il: 27 Settembre 2010, 11:41:40 CEST »
0
Non riesco a trovare la soluzione in rete, qualche idea?

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:Come posizionare un componente tramite java
« Risposta #4 il: 27 Settembre 2010, 12:41:40 CEST »
+1
non c'è il metodo addRule per una ImageView

Ma scrivendo una cosa del genere non va?
(addrule non è del componente, ma è del layout param)

Codice (Java): [Seleziona]
RelativeLayout.LayoutParams imgview_params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
imgview_params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
my_imgview.setLayoutParams(imgview_params);
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come posizionare un componente tramite java
« Risposta #5 il: 27 Settembre 2010, 13:03:42 CEST »
0
Bradipao il codice che hai scritto funziona
però io devo dire alla mi imageView di stare alla destra del componente Y1
io posso scrivere

Codice (Java): [Seleziona]
ImageView my_imgview= (ImageView)findViewById(R.id.my_imgview);
RelativeLayout.LayoutParams imgview_params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
imgview_params.addRule(RelativeLayout.ALIGN_RIGHT);
my_imgview.setLayoutParams(imgview_params);

ovvero specificando ALIGN_RIGHT ma come faccio a dirgli ALIGN:RIGHT di Y1 cioè stai a destra del componente Y1

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Come posizionare un componente tramite java
« Risposta #6 il: 27 Settembre 2010, 13:18:11 CEST »
+1
Devi usare addRule, specificando l'id a cui vuoi ancorare.

Codice: [Seleziona]
public void addRule (int verb, int anchor)
Since: API Level 1
Adds a layout rule to be interpreted by the RelativeLayout. Use this for verbs that take a target, such as a sibling (ALIGN_RIGHT) or a boolean value (VISIBLE).

Parameters
verb        One of the verbs defined by RelativeLayout, such as ALIGN_WITH_PARENT_LEFT.
anchor        The id of another view to use as an anchor, or a boolean value(represented as TRUE) for true or 0 for false). For verbs that don't refer to another sibling (for example, ALIGN_WITH_PARENT_BOTTOM) just use -1.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Come posizionare un componente tramite java
« Risposta #7 il: 27 Settembre 2010, 13:22:50 CEST »
+1
andream1977 se hai scoperto che il metodo addRule può fare per te, fai una bella ricerca con

Google
Google Code Search

e vedi un po' di esempi di utilizzo ;)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come posizionare un componente tramite java
« Risposta #8 il: 27 Settembre 2010, 13:35:08 CEST »
0
Perfetto, ecco la soluzione

imgview_params.addRule(RelativeLayout.ALIGN_LEFT, R.id.Y1);