2012-03-14 20 views
20

Odio essere la terza persona a chiedere questo, ma il precedente twoaskings non sembravano rispondere pienamente. Le linee guida sulla progettazione di Android sono dettagliate allo borderless buttons, ma non su come realizzarle. In una delle risposte precedenti, c'era un sugestion da usare:Tasti senza bordi Android

style="@android:style/Widget.Holo.Button.Borderless"

Questo funziona bene per un tema Holo, ma io uso un sacco di Holo.Light come bene e

style="@android:style/Widget.Holo.Light.Button.Borderless"

Non sembra esistere. C'è un modo per applicare uno stile per tali pulsanti senza bordi in Holo.Light, o meglio ancora, semplicemente applicare un tag senza bordi senza specificare a quale tema appartenga, quindi l'app può scegliere lo stile corretto in fase di runtime?

Holo.ButtonBar sembra adattarsi al conto per quello che sto cercando, tranne che non fornisce alcun feedback da parte dell'utente che è stato premuto.

Inoltre, c'è un posto nella documentazione che elenca gli stili che possono essere applicati e una loro descrizione? Non importa quanto io google, e cercare tra i documenti, non riesco a trovare nulla. C'è solo un elenco non descrittivo se faccio clic destro e modifica lo stile.

Qualsiasi aiuto sarebbe apprezzato.

Modifica: ho ottenuto una risposta perfetta da javram e volevo aggiungere dell'XML per chiunque fosse interessato ad aggiungere i bordi parziali che google ha adottato.

Fora di divisione orizzontale, questa grande opera

<View 
    android:id="@+id/horizontal_divider_login" 
    android:layout_width="match_parent" 
    android:layout_height="1dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:background="@color/holo_blue" /> 

e questo per un verticale uno:

<View 
    android:id="@+id/vertical_divider" 
    android:layout_width="1dip" 
    android:layout_height="match_parent" 
    android:layout_marginBottom="8dp" 
    android:layout_marginTop="8dp" 
    android:background="@color/holo_blue" /> 

risposta

21

Controllare la mia risposta here. In poche parole la soluzione corretta è quella di utilizzare il seguente:

android:background="?android:attr/selectableItemBackground" 
+6

Quando si utilizza Android 2.2, 2.3.x, non funziona :( – Xdg

+0

@Xdg funzionerà se si utilizza HolloEveywhere: https://github.com/Prototik/HoloEverywhere/ –

+5

Se utilizzi la libreria AppCompat, rimuovi il prefisso "android:" e funzionerà: android: background = "? Attr/selectableItemBackground" –

8

Questo codice rimuoverà tutti i background per un pulsante:

android:background="@android:color/transparent" 
+0

che sembra una risposta che è molto da semplice da prendere 3 domande a cui rispondere, ma lo fa il trucco esattamente. Inoltre, per chiunque lo veda più tardi e si chiede, per ottenere i semi-bordi che google ha adottato, ho aggiunto un codice che ha funzionato per me nel primo post, poiché la pubblicazione di codice in sotto-risposte è difficile da leggere. –

+0

Ricordo di aver pensato la stessa cosa quando stavo cercando di capirlo. Lo sto usando come collegamento ipertestuale, che avrebbe dovuto essere un compito relativamente semplice, o almeno così pensavo ... – javram

+0

ciò richiede api 11 – gsscoder

38

È sufficiente aggiungere la seguente attributo di stile nel tag Button:

style="?android:attr/borderlessButtonStyle" 

fonte: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless

+4

Questa è una buona risposta, ma tieni presente che l'attributo è stato aggiunto in API 11. –

+0

E borderlessButtonStyle imposta lo sfondo su SelectableItemBackground e imposta alcuni padding, nient'altro. – Anderson

1

Solo in caso qualcuno è alla ricerca di soluzione leggera per ottenere il pulsante senza bordi per le API che non supportano il tema Holo (come ho fatto per molto tempo), sto postando la mia soluzione di seguito:

<View 
    android:layout_height="1dp" 
    android:layout_width="match_parent" 
    android:background="#505154" 
    android:layout_marginLeft="10dp" android:layout_marginRight="10dp"/> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <Button 
     android:id="@+id/btn_Reply" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_weight="1" 
     android:background="@android:color/transparent" 
     android:paddingBottom="15dp" android:paddingTop="15dp" 
     android:textColor="#5c5966" 
     android:text="@string/btnReplyText"/> 

    <View 
     android:layout_height="fill_parent" 
     android:layout_width="1dp" 
     android:background="#505154" 
     android:layout_marginBottom="7dp" android:layout_marginTop="7dp"/> 

    <Button 
     android:id="@+id/btn_Delete" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_weight="1" 
     android:paddingBottom="15dp" android:paddingTop="15dp" 
     android:textColor="#5c5966" 
     android:background="@android:color/transparent" 
     android:text="@string/btnDeleteText" /> 

    <View 
     android:layout_height="fill_parent" 
     android:layout_width="1dp" 
     android:background="#505154" 
     android:text="@string/btnReplyText" 
     android:layout_marginBottom="7dp" android:layout_marginTop="7dp" /> 

    <Button 
     android:id="@+id/btn_Exit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_gravity="center" 
     android:text="@string/btnExitText" 
     android:paddingBottom="15dp" android:paddingTop="15dp" 
     android:textColor="#5c5966" 
     android:background="@android:color/transparent"/> 
</LinearLayout> 

Tutto ciò che dovete fare è cambiare i colori e il testo in base al vostro sfondo. Ti auguro il meglio!

6

A rischio di battere un cavallo morto, ecco un'altra opzione (forse migliore). AppCompat v7 definisce uno stile di pulsante senza bordi.Se sei già facendo uso della biblioteca AppCompat, basta andare con che:

<Button android:text="@string/borderlessButtonText" style="@style/Widget.AppCompat.Button.Borderless" />

Problemi correlati