2010-12-20 224 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“