2010-12-20 450 views
23

普通按鈕看起來像:機器人 - 按鈕樣式

alt text

現在,請讓我知道,我怎樣才能使一個簡單的按鈕一樣的附加圖像按鈕(即按鈕拐角形狀是圓的,也有

alt text

回答

22

9補丁會工作在這裏很好,但我會盡量避免他們,因爲很難對按鍵之間沒有縫隙(保證金)我做這些:(

你可以嘗試有selector和使用形狀每個狀態:

形狀應該是這樣的:

<?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爲支持,其工作正常 – 2011-03-16 12:00:48

+0

是的最好的你是絕對正確的即將使用9補丁圖像,請檢查我的答案如下:http://stackoverflow.com/questions/4489069/android-button- style/6659516#6659516 – 2011-07-12 04:30:45

+0

對於半徑,如果所有角落都是相同的,可以使用這個小提示:android:radius =「Xdp」。只要添加他的代碼是好的。 – Nemka 2014-07-29 15:57:15

5

你需要創建一個9-patch繪製兩個按鍵之間沒有縫隙)。爲了讓您需要創建XML適當的佈局和設置margin爲0

+0

+1,thanx的支持,它也幫助我明白了這一點。 – 2011-03-16 12:01:19

1

您還可以使用的ImageView在XML文件,並給予onClickable和onFocusable真正的N新建的後端代碼onClick事件的方法,並給XML的方法的名稱,以便不用處理所有形狀或按鈕的問題,你只是把ImageView的存在,使它像一個button.Here是示例代碼爲您

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

正如我在後臺方面稱,創建方法與這樣的跡象,這將做的工作

public void testClickEvent(View v){} 

然後實現你想在這個方法中做什麼

4

創建九個補丁繪製其很容易與draw9patch(部分Android設備/工具),然後應用的風格和主題......在this link (Androgames.net)教程應該讓你開始。

+0

+1,thanx支持。 – 2011-03-16 12:01:50

+0

鏈接已經死亡 – Thomas 2013-12-03 08:06:47

4

尋foursquared源代碼和尋找SegmentedButton.java文件,這是實現這些按鈕在圖像中示出的文件中。

+0

+1 Thiago Thanx爲它指出。我已經解決並實施了比這更好的事件:)我仍然會檢查它是否好。 :) – 2011-06-23 04:39:50

28

這裏有一些很漂亮的漸變按鈕的例子包括預覽: http://www.dibbus.com/2011/02/gradient-buttons-for-android/

+0

Thanx分享這個,但我已經遇到了這篇文章4個月前。 – 2011-07-12 04:29:18

+21

別忘了所有其他用戶在這裏。 – Bachi 2011-08-15 19:39:58

+0

甚至更​​多:http://www.dibbus.com/2011/08/even-more-gradient-buttons-for-android/ – andresmafra 2014-04-03 23:04:04

25

1-創造按下和釋放狀態

要創建形狀,我建議這個偉大的網站會爲你做它的形狀(與所需的顏色):http://angrytools.com/android/button/

繪製\ 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-創建兩個形狀

選擇

抽拉\ 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-使用選擇該按鈕

<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

要設置文本的樣式,您可以將其添加到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> 

,並調用它在main.xml中按鈕

style="@style/ButtonText" 

,你可以在@繪製創造/ btn_black具有以下玩的另一種方法...

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

呼叫 風格=「@風格/ button_pr imary「