2017-09-27 83 views
1

删除边框我有这个按钮:从无边距按钮

<Button 
    android:id="@+id/btn_action" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:theme="@style/AppTheme.Button.Toolbar"/> 

而且这一款式:

<style name="AppTheme.Button.Toolbar" parent="Widget.AppCompat.Button.Borderless"> 
    <item name="colorButtonNormal">@color/main</item> 
    <item name="android:textColor">@color/secondary</item> 
</style> 

即使风格从Widget.AppCompat.Button.Borderless继承,按钮仍然具有边框。

Button更改为android.support.v7.widget.AppCompatButton没有帮助。

如何删除边框呢?

编辑:按钮的

设置的背景是不是一种选择 - 这样做的连锁反应动画丢失。

编辑2:

事情变得更有趣。

试图改变android:themestyle,因为@cadet建议。

当按钮被这样定义的:

<Button 
    android:id="@+id/btn_action" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:theme="@style/ToolbarButton"/> 

这就是我得到:

enter image description here

颜色适用,但有明显的边框。

如果我只是改变主题风格:

<Button 
    android:id="@+id/btn_action" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    style="@style/ToolbarButton"/> 

我得到这个:

enter image description here

没有边框,风格只是部分应用(文本颜色,按钮不是)

编辑3:

朋友们,我正在寻找一种方法来获得无边界,使用造型方法涟漪效应风格的按钮。在布局文件中分别对每个按钮分别进行操作可能会奏效,但这不是重点。

+0

This! @NileshRathod是正确的 – Grisgram

+0

@容易检查我的答案,我认为它可能会指出你在正确的方向。我想你想使用可绘制的波纹和无边框按钮的组合来达到预期的效果。 –

+0

@韦德威尔逊,我看不到你的答案。你删除了吗? – Vasiliy

回答

0

试试这个,希望出这一个可以帮助你

<Button 
    android:id="@+id/btn_photo_lib" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="startPhotoLibAction" 
    android:src="@drawable/library_blau_2" 
    style="?android:attr/borderlessButtonStyle"/> 

android:background="@null" 
+0

不完全是我在找什么。改变背景会减少连锁反应。 – Vasiliy

0

组后台@null。或者设置自己所产生的背景

android:background="@null" 
+0

试图设置它的风格。没有效果。 – Vasiliy

+0

然后尝试设置按钮本身。工程,但按钮松动涟漪和所有其他影响。不是我在找什么。 – Vasiliy

0

您可以使用不同的看法,而不是按钮

<LinearLayout 
android:id="@+id/btn_action_alternative" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentEnd="true" 
android:layout_alignParentRight="true" 
android:clickable="true" /> 
+0

我希望纹波和所有其他按钮的效果都适用。 – Vasiliy

+0

您可以使用以下方法添加涟漪效果:“android:background =?attr/selectableItemBackgroundBorderless”,还可以使用Cardview代替LinearLayout(用于背景阴影)。但对于触摸调整动画大小,我认为你必须在onTouchListener方法中写一些代码。 – Mete

+1

请参阅编辑3的问题。我想对我的应用程序进行样式设计,而不是破解它中的每个按钮... – Vasiliy

0

我发现了一个更好的解决方案,你会想创建一个自定义绘制,并根据最小版本的应用程序支持,你需要创建两个,一个用于21岁以前的Android版本(棒棒糖),另一个用于21岁以后的棒棒糖(Lollipop)。这两个文件需要命名相同,以便Android可以根据API级别找到它们并进行适当匹配。但是,在API 21,你的文件上面的文件,绘制文件应该像这样:

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
     android:color="?android:colorControlHighlight"> 
     <item android:drawable="@drawable/button_normal"/> 
</ripple> 

这可绘制文件被包装另外的绘制对象即是您首选的背景图像或颜色有波纹,其颜色使用“的定义? android:colorControlHighlight“,它简单地引用了当前活动使用的任何主题的默认颜色。

如果您需要支持21岁以前的(棒棒糖),那么您的可绘制文件将只是一个选择器,并带有首选drawable。您的首选绘图应该是相同的背景颜色,或者甚至是透明颜色,以确保您可以看到您的父级布局背景颜色。此类似:

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

可以以无边框样式应用到它的所有按钮,所有按钮的布局与风格结合这个......我建议你使用一个透明的绘制,所以你可以使用这个无论父母是否具有不同的颜色背景,都可以使用所有按钮。这将阻止你制作不同背景的几个主题。

要处理版本控制支持,或者如果您希望基于各种设备配置的自定义绘图支持配置支持,您只需创建具有特定配置后缀的多个可绘制文件夹即可。所以,举个例子,只有版本21和更高版本的drawable才会创建一个名为'drawable-21'的文件夹。

我发现了一个website,可以更好地解释我在说什么。

+0

我差点忘了我有多讨厌android ...我将尝试稍后使用它,看看它是怎么回事。谢谢 – Vasiliy

+0

@Vasiliy是否解决了您的问题? –

+0

我诚实地忘记了这一点,并继续前进。但是,既然我答应检查一下,一旦压力释放并报告回来,我会尝试解决方案。 – Vasiliy