我有这个按钮:
<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:theme
更改为style
,因为@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"/>
这就是我得到的:
颜色适用,但有明显的边界。
如果我只是将主题更改为样式:
<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"/>
我明白了:
没有边框,并且样式仅部分应用(文本为彩色,按钮不是)
编辑3:
朋友们,我正在寻找一种方法,使用样式方法获得带有涟漪效果的无边框,样式按钮。在布局文件中分别黑客攻击每个按钮可能会有效,但这不是重点。
答案 0 :(得分: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"
答案 1 :(得分:0)
设置背景@null。或设置自己创建的背景
android:background="@null"
答案 2 :(得分: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" />
答案 3 :(得分:0)
我找到了一个更好的解决方案,你想创建一个自定义drawable,并根据你的应用程序支持的最小版本,你需要创建两个,一个用于Android版本21之前(Lollipop)和另一个用于post 21 (棒糖)。这两个文件需要以相同的名称命名,以便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>
这个Drawable文件正在包装另一个Drawable,它是你喜欢的背景图像或颜色,带有一个涟漪,其颜色是用“?android:colorControlHighlight”定义的,这是一个简单的参考默认颜色,来自当前活动的主题。使用
如果您需要支持21之前(棒棒糖),您的可绘制文件将只是一个选择器,具有首选的drawable。您首选的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>
你可以将它与一个样式结合起来,以便将无边框样式应用到布局中所有按钮的所有按钮...我建议你使用透明drawable,这样你就可以使用这个样式与所有按钮,无论他们的父母是否有不同的颜色背景。这将阻止您制作具有不同背景的多个主题。
要处理版本控制支持,甚至配置支持,如果您想要基于各种设备配置的自定义绘图,您只需创建几个具有配置特定后缀的可绘制文件夹。因此,例如,仅适用于版本21及更高版本的drawable,您将创建一个名为'drawable-21'的文件夹。
我发现website可以更好地解释我在说什么。