Autore Topic: Centrare una ImageButton  (Letto 524 volte)

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Centrare una ImageButton
« il: 06 Ottobre 2011, 14:17:35 CEST »
0
Salve a tutti,
è la prima volta che realizzo un layout e mi serve il vostro aiuto!!!
Vi posto il file xml di Layout:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tableLayout1">
        <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blu">
            <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1">
                <ImageButton android:layout_width="wrap_content" android:src="@drawable/icon" android:layout_height="wrap_content" android:id="@+id/imageButton1"></ImageButton>
            </LinearLayout>
            <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1">
                <ImageButton android:layout_width="wrap_content" android:src="@drawable/icon" android:layout_height="wrap_content" android:id="@+id/imageButton2"></ImageButton>
            </LinearLayout>
        </TableRow>
        <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">
            <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1">
                <ImageButton android:layout_width="wrap_content" android:src="@drawable/icon" android:layout_height="wrap_content" android:id="@+id/imageButton3"></ImageButton>
            </LinearLayout>
            <LinearLayout android:id="@+id/linearLayout4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1">
                <ImageButton android:layout_width="wrap_content" android:src="@drawable/icon" android:layout_height="wrap_content" android:id="@+id/imageButton4"></ImageButton>
            </LinearLayout>
        </TableRow>
        <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content">
            <LinearLayout android:id="@+id/linearLayout5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1">
                <ImageButton android:layout_width="wrap_content" android:src="@drawable/icon" android:layout_height="wrap_content" android:id="@+id/imageButton5"></ImageButton>
            </LinearLayout>
            <LinearLayout android:id="@+id/linearLayout6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1">
                <ImageButton android:layout_width="wrap_content" android:src="@drawable/icon" android:layout_height="wrap_content" android:id="@+id/imageButton6"></ImageButton>
            </LinearLayout>
        </TableRow>
        <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content"></TableRow>
    </TableLayout>
 
e l'immagine corrispondente in allegato.

Vorrei un consiglio su come ottimizzare questo tipo di layout visto che ho annidato vari Layout di default ed inoltre avrei bisogno di centrare le ImageButton.
Ho provato con layout grativity con parametro center ma non va.

Offline Khali

  • Utente junior
  • **
  • Post: 70
  • Respect: +7
    • u.felloni
    • Mostra profilo
  • Play Store ID:
    weetme software
  • Sistema operativo:
    windows 7
Re:Centrare una ImageButton
« Risposta #1 il: 06 Ottobre 2011, 14:25:39 CEST »
+1
al posto di LinearLayout usa RelativeLayout e poi aggiungi android:layout_centerInParent="true"

Codice (XML): [Seleziona]
<RelativeLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1">
                <ImageButton android:layout_centerInParent="true" android:layout_width="wrap_content" android:src="@drawable/icon" android:layout_height="wrap_content" android:id="@+id/imageButton1"></ImageButton>
</RelativeLayout>

Ciao
« Ultima modifica: 06 Ottobre 2011, 14:39:58 CEST da Ricky` »

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Re:Centrare una ImageButton
« Risposta #2 il: 06 Ottobre 2011, 18:17:53 CEST »
0
Non sono riuscito a fare quello che volevo, sono ore che ci provo, ma le regole di questi layout proprio non le capisco.
Io devo riuscire ad ottenere un layout così:

non credo sia complicato ma nonostante tutto non ci riesco.
Qualcuno può darmi un input su come farlo?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
R: Centrare una ImageButton
« Risposta #3 il: 06 Ottobre 2011, 18:47:02 CEST »
0
Dai un occhio all'applicazione del Google I/O 2011:

http://code.google.com/p/iosched/

Inviato dal mio HTC Desire usando Tapatalk

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Re:Centrare una ImageButton
« Risposta #4 il: 06 Ottobre 2011, 18:58:33 CEST »
0
Penso di esserci riuscito, vi posto il codice e in allegato lo screen shot
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- Prima riga -->
        <LinearLayout android:layout_width="match_parent"
                android:id="@+id/linearLayout1" android:orientation="horizontal"
                android:layout_height="wrap_content" android:background="@color/blu">

                <ImageButton android:id="@+id/imageButton1"
                        android:layout_height="wrap_content" android:src="@drawable/icon"
                        android:layout_width="wrap_content" android:layout_weight="1" android:background="@color/blu" android:layout_gravity="center_vertical|center_horizontal">
                </ImageButton>

                <ImageButton android:id="@+id/imageButton2"
                        android:layout_height="wrap_content" android:layout_width="wrap_content"
                        android:src="@drawable/icon" android:layout_weight="1" android:background="@color/blu" android:layout_gravity="center_vertical|center_horizontal">
                </ImageButton>

        </LinearLayout>

        <!-- Seconda riga -->
        <LinearLayout android:layout_height="wrap_content"
                android:layout_width="match_parent" android:id="@+id/linearLayout2"
                android:orientation="horizontal" android:layout_weight="5" android:background="@color/bianco">

                <ImageButton android:id="@+id/imageButton3"
                        android:layout_height="wrap_content" android:layout_width="wrap_content"
                        android:src="@drawable/icon" android:layout_weight="1" android:background="@color/bianco" android:layout_gravity="center_vertical|center_horizontal">
                </ImageButton>

                <ImageButton android:id="@+id/imageButton4"
                        android:layout_height="wrap_content" android:layout_width="wrap_content"
                        android:src="@drawable/icon" android:layout_weight="1" android:background="@color/bianco" android:layout_gravity="center_vertical|center_horizontal">
                </ImageButton>

        </LinearLayout>

        <!-- Terza riga -->
        <LinearLayout android:layout_height="wrap_content"
                android:layout_width="match_parent" android:id="@+id/linearLayout3"
                android:orientation="horizontal" android:layout_weight="5" android:background="@color/bianco">

                <ImageButton android:id="@+id/imageButton5"
                        android:layout_height="wrap_content" android:layout_width="wrap_content"
                        android:src="@drawable/icon" android:layout_weight="1" android:background="@color/bianco" android:layout_gravity="center_vertical|center_horizontal">
                </ImageButton>

                <ImageButton android:id="@+id/imageButton6"
                        android:layout_height="wrap_content" android:layout_width="wrap_content"
                        android:src="@drawable/icon" android:layout_weight="1" android:background="@color/bianco" android:layout_gravity="center_vertical|center_horizontal">
                </ImageButton>

        </LinearLayout>

        <!-- Fine layout generale -->
</LinearLayout>
Non so se sai una buona soluzione.
Comunque ora il problema è che nonostante abbia inserito delle ImageButton quest'ultime non siano cliccabili, dunque quali elementi mi consigliate di usare come icone cliccabili?

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:Centrare una ImageButton
« Risposta #5 il: 06 Ottobre 2011, 19:20:04 CEST »
0
Ciao  :-) ascolta a me  :-P prova  metterci dei button con backound da te voluto ti potrebbe sembrare che non reagiscano al click ma fidati che lo fanno  8-)

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Re:Centrare una ImageButton
« Risposta #6 il: 06 Ottobre 2011, 19:30:48 CEST »
0
Si lo so che i Button reagiscono al click (ci mancherebbe altro), ma io parlavo di ImageButton, che ora ho scoperto essere  una specializzazione di ImageView e non di Button ecco perchè non reagiscono ai click.
Io ogni caso utilizzando dei button è possibile inserirci come background un'icona e mettere magari una TextView?

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:Centrare una ImageButton
« Risposta #7 il: 06 Ottobre 2011, 19:38:21 CEST »
0
Si i button sono ogni potenti sono cliccabili possono cambiare background possono avere testo scritto sopra ecc.  :D

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Centrare una ImageButton
« Risposta #8 il: 06 Ottobre 2011, 23:46:36 CEST »
+1
Non è esattissimo. Possono avere un'immagine di background e un testo sopra il background, ma non un'immagine e sotto l'immagine del testo, che è quello che immagino tu voglia.
Comunque, per fare ciò che vuoi, c'è il metodo che hai usato, che ha come lato negativo l'ottenere un file di layout un po' "prolisso",  la gridview con un adapter personalizzato, che minimizza il codice nell'xml, oppure usare l'include. Tutte le view sono cliccabili, e per restituire un feedback al click dell'utente basta usare un selector per il backgound.  ;-)