2012-09-18 66 views
3

我需要添加一个边框到我的按钮,当它被点击时,我需要从按钮的背景(我得到远程,所以我不能使用R.drawable.picture等)保持它的方式。Android添加边框到按钮

总之,点击时,我想添加一个边框到我的(自定义后台)按钮。

我该怎么做?我已经阅读了很多关于边框,按钮,形状,选择器等的页面和问题,但是其中大部分涉及xml,但是因为在启动应用程序之前我没有按钮的背景,所以我认为我是必须以编程方式添加和删除边框。再次,我需要保留自定义按钮背景,但添加一个小的onclick边框。

注意:我在所有按钮上使用此尺寸不同的尺寸。所以应用drawable不是一个真正的选择。我想我必须围绕点击按钮绘制矩形。

注2:同样,我有一个必须应用的背景。边界仅仅是onclick事件的一个小指标。所以我不能放在XML背景是某种选择器

+0

检查此链接:http://stackoverflow.com/questions/6444194/android-programatically-create-button-border – 2012-09-18 09:58:28

回答

0

您可以定义XML layer_list与2层:一个用于图像,另一个用于你的边界,并使用该图层列表作为您的按钮的按下状态的可绘制

+1

所有的按键都不同尺寸。这是一个问题吗? – stealthjong

0

你可以尝试有一个9.png只有一个黑色边框透明区域周围。这可以使用选择器在按钮的“按下”状态下应用。

5

Btn.xml

<?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="5dp" 
      android:top="5dp" 
      android:right="5dp" 
      android:bottom="5dp" /> 
    </shape> 
</item> 
<item> 
    <shape> 
     <gradient 
      android:startColor="#343434" 
      android:endColor="#275296" 
      android:angle="270" /> 
     <stroke 
      android:width="0dp" 
      android:color="#171717" /> 
     <corners 
      android:radius="4dp" /> 
     <padding 
      android:left="5dp" 
      android:top="5dp" 
      android:right="5dp" 
      android:bottom="5dp" /> 
    </shape> 
</item> 
</selector> 

此处笔划属性将在单击时显示为按钮的边框。

将其保存在可绘制文件夹中。并且使用如下

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/btn" 
    android:textColor="@color/white" 
    android:text="Button"/> 
+0

这适用于没有背景的按钮。但是,已应用后台的按钮在单击时不显示任何边框。 – stealthjong

+0

@ChristiaandeJong你做到了吗?我的意思是设置一个边框与背景? –

+0

@ System.exit是的,但不是通过XML文件,因为我从外部源获得资源。很久以前,但我认为我拍摄了图像,将它制作为LayerDrawable上的图层,并使边框成为可绘制的9patch,并将其放入LayerDrawable中。虽然它有效,但看起来并不好,所以我建议阅读其他一些帖子并制作一个自定义按钮。 – stealthjong