2012-03-14 27 views
20

Nienawidzę być trzecią osobą, która o to pyta, ale poprzednie twoaskings wydawały się nie odpowiadać w pełni. Szczegółowe wytyczne dotyczące projektowania Androida: borderless buttons, ale nie można ich uzyskać. W jednym z poprzednich odpowiedzi, była sugestia, aby użyć:Przyciski bezgraniczne z Androidem

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

Działa to dobrze dla motywu Holo, ale używam dużo Holo.Light jak również i

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

Wygląda na to, że nie istnieje. Czy istnieje sposób na zastosowanie stylu dla takich bezgranicznych przycisków w Holo.Light, a jeszcze lepiej, po prostu zastosuj tag bez obramowania bez określenia, do którego motywu należy, aby aplikacja mogła wybrać odpowiedni styl w czasie wykonywania?

Wygląda na to, że Holo.ButtonBar pasuje do rachunku za to, czego szukam, z tym wyjątkiem, że nie zapewnia żadnych opinii użytkowników, że został naciśnięty.

Czy jest też miejsce w dokumentacji, które zawiera listę takich stylów, które można zastosować i ich opis? Bez względu na to, jak dużo google i przeszukiwać dokumenty, nie mogę znaleźć niczego. Istnieje tylko lista nieopisująca, jeśli kliknę prawym przyciskiem myszy i zmienię styl.

Każda pomoc zostanie doceniona.

Edycja: Dostałem idealną odpowiedź od javram i chciałem dodać trochę XML dla wszystkich zainteresowanych dodaniem częściowych granic, które Google zaakceptował.

Fora pozioma przegroda ta działa świetnie

<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" /> 

i to na pionowej One:

<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" /> 

Odpowiedz

21

Sprawdź moja odpowiedź: here. W skrócie poprawnym rozwiązaniem jest użycie następujących:

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

Kiedy używasz Androida 2.2, 2.3.x, to nie działa :( – Xdg

+0

@Xdg to będzie działać, jeśli używasz HolloEveywhere: https://github.com/Prototik/HoloEverywhere/ –

+5

Jeśli używasz biblioteki AppCompat, a następnie usuń „Android:” prefiks i będzie działać: Android: t = –

8

Ten kod usunie wszystkie tła dla przycisku:

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

to wydaje się, że odpowiedź jest bardzo prosta, aby wziąć 3 pytania odpowiedzieć, ale załatwia sprawę dokładnie. Ponadto, dla każdego, kto widząc to później i zastanawiasz się, aby uzyskać pół graniczy google przyjęła, dodałem trochę kodu, który pracował dla mnie w pierwszym poście, ponieważ księgowania kod w cząstkowych reakcji jest trudne do odczytania. –

+0

Pamiętam, że myślałem o tym samym, gdy próbowałem to rozgryźć. Używam go jako hiperłącza, co powinno być względnie prostym zadaniem, lub tak pomyślałem ... – javram

+0

to wymaga api 11 – gsscoder

38

Wystarczy dodać następujący atrybut stylu w tagu Button:

style="?android:attr/borderlessButtonStyle" 

źródło: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless

+4

to jest dobra odpowiedź, ale należy pamiętać, że atrybut został dodany w „attr/selectableItemBackground?” API 11. –

+0

A borderlessButtonStyle ustawia tło dla wybieralnegoItemBackground i ustawia niektóre wypełnienia, nic więcej. – Anderson

1

nie rozczarować ktoś szuka lekkie rozwiązanie, aby uzyskać przycisk bez obramowania dla interfejsów API, które nie obsługują motywu Holo (tak jak robiłem to przez długi czas), Zamieszczam poniżej moje rozwiązanie:

<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> 

Wszystko, co musisz zrobić, to zmienić kolory i tekst, aby dopasować je do własnego tła. Wszystkiego najlepszego!

6

Ryzykując pokonanie martwego konia, oto kolejna (prawdopodobnie lepsza) opcja. AppCompat v7 definiuje styl przycisku bez obramowania.Jeśli jesteś już wykorzystanie biblioteki AppCompat, tylko iść z tym:

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