2010-12-20 15 views
23

normalny przycisk wygląda tak:android - Przycisk styl

alt text

Teraz, proszę dać mi znać, jak mogę zrobić prosty przycisk samo jak przycisk dołączony obrazu (czyli przycisk rogu kształt jest okrągły, a także nie ma szczeliny między dwoma przyciskami)

alt text

Odpowiedz

22

9-plaster będzie działać dobrze tutaj, ale staram się ich uniknąć, ponieważ trudno jest mi je zrobić :(

można spróbować posiadające selector i korzystania kształt dla każdego stanu:

kształt będzie wyglądać następująco:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <solid android:color="#AAFFFFFF"/> 

    <corners android:bottomRightRadius="7dp" 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 
</shape> 
+1

+1, thanx za wsparcie, działa dobrze –

+0

Tak Macarse miał absolutnie rację, aby użyć obrazu 9-patch, proszę sprawdzić moją odpowiedź poniżej: http://stackoverflow.com/questions/4489069/android-button- style/6659516 # 6659516 –

+0

Dla promienia możesz użyć tych małych wskazówek, jeśli wszystkie rogi będą takie same: android: radius = "Xdp". Wystarczy dodać, że jego kod jest dobry. – Nemka

5

trzeba stworzyć 9-patch rozciągliwej. Aby nie było luki (marginesu) między przyciskami, musisz utworzyć odpowiedni układ w XML i ustawić margines na 0.

+0

+1 za wsparcie, pomaga mi również uzyskać punkt. –

1

można również użyć ImageView w xml plik, a następnie nada onClickable i onFocusable true i n Stwórz metodę zdarzenia onClick na kodzie backendu i podaj nazwę metody na xml, aby zamiast zajmować się wszystkimi problemami z kształtem lub przyciskiem, umieściłeś tam obraz i sprawiłeś, że działa jak przycisk. Oto przykładowy kod dla ciebie

<ImageView 
      android:id="@+id/test" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:clickable="true" 
      android:focusable="true" 
      android:onClick="testClickEvent" 
      android:paddingRight="8dip" 
      android:paddingBottom="8dip" 
      android:src="@drawable/testImg"/> 

Jak powiedziałem na stronie backend stworzyć metodę z napisem tak i ten będzie wykonać zadanie

public void testClickEvent(View v){} 

Następnie realizować to, co chcesz robić w tej metodzie

4

tworzenie rozciągliwej Dziewięć poprawki, które jest łatwe z draw9patch (część Android/narzędzia), a następnie zastosować style i motywy ... samouczek na this link (Androgames.net) powinien zacząć.

+0

+1, thanx za wsparcie. –

+0

link jest martwy – Thomas

4

poszukaj czterorakiego kodu źródłowego i poszukaj pliku SegmentedButton.java, jest to plik, który implementuje przyciski widoczne na obrazku.

+0

+1 Thiago Thanx za wskazanie. Już rozwiązałem i zaimplementowałem wydarzenie lepiej niż to :) wciąż sprawdzę, czy jest dobrze. :) –

28

Oto kilka przykładów gradientu wyglądających przycisków w tym podglądzie: http://www.dibbus.com/2011/02/gradient-buttons-for-android/

+0

Dzięki za podzielenie się tym, ale już natknąłem się na ten artykuł 4 miesiące wstecz. –

+21

Nie zapomnij o wszystkich innych użytkownikach tutaj. – Bachi

+0

A nawet więcej: http://www.dibbus.com/2011/08/even-more-gradient-buttons-for-android/ – andresmafra

25

1- tworzyć kształty (z pożądanych kolorów) dla naciśnięty i zwolniony stanach

aby utworzyć kształty Proponuję ten wielki stronie internetowej zrobi to za ciebie: http://angrytools.com/android/button/

odkształcalne \ botton_shape_pressed.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="@color/pressed_button_background" 
     android:endColor="@color/pressed_button_background" 
     android:angle="45"/> 
    <padding android:left="7dp" 
     android:top="7dp" 
     android:right="7dp" 
     android:bottom="7dp" /> 
    <corners android:radius="8dp" /> 
</shape> 

drawable \ botton_shape_released.XML:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="@color/released_button_background" 
     android:endColor="@color/released_button_background" 
     android:angle="45"/> 
    <padding android:left="7dp" 
     android:top="7dp" 
     android:right="7dp" 
     android:bottom="7dp" /> 
    <corners android:radius="8dp" /> 
</shape> 

2- utworzyć przełącznik dla dwóch kształtów

odkształcalne \ botton_selector.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/botton_shape_pressed" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/botton_shape_pressed" 
      android:state_selected="true" /> 
    <item android:drawable="@drawable/botton_shape_released" /> 
</selector> 

3- pomocą przełącznika na przycisk

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/test" 
    android:textColor="@color/blue_text" 
    android:onClick="testOnClickListener" 
    android:background="@drawable/botton_selector" /> 
3

styl tekstu można dodać do strings.xml

<style name="ButtonText"> 
    <item name="android:layout_width">fill_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textColor">#ffffff</item> 
    <item name="android:gravity">center</item> 
    <item name="android:layout_margin">3dp</item> 
    <item name="android:textSize">30dp</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:shadowColor">#000000</item> 
    <item name="android:shadowDx">1</item> 
    <item name="android:shadowDy">1</item> 
    <item name="android:shadowRadius">2</item> 
    </style> 

i nazwać go w przycisku main.xml

style="@style/ButtonText" 

i alternatywnej metody można grać z tworzy w @ odkształcalne/btn_black z następujących ...

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" > 
     <shape> 
      <solid 
       android:color="#343434" /> 
      <stroke 
       android:width="1dp" 
       android:color="#171717" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <gradient 
       android:startColor="#343434" 
       android:endColor="#171717" 
       android:angle="270" /> 
      <stroke 
       android:width="1dp" 
       android:color="#171717" /> 
      <corners 
       android:radius="4dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 
0

button_primary .xml

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 

     <gradient 
      android:angle="270" 
      android:endColor="@color/background" 
      android:startColor="@color/background" /> 

     <corners android:radius="1dp" /> 

     <stroke 
      android:width="2px" 
      android:color="@color/colorPrimary3" /> 

    </shape> 

wezwanie style = "@ styl/button_pr imary "

Powiązane problemy