我在XML布局中定义了一个AppCompatButton,我为它设置了一个主题:
android:theme="@style/CustomAccentOverlay"
我已经设定:
android:stateListAnimator="@null"
删除阴影。我有两个问题。
即使阴影未显示,按钮的高度也会扣除阴影的高度。我应该以其他方式删除阴影,或者我该如何解决这个问题?
按钮有圆角,我希望角落清晰。我无法在按钮上设置背景,因为我想保持标准的涟漪效果,如果我设置了背景,那就消失了(至少我不知道如果设置背景怎么保持它)。我试过设置
<item name="android:bottomLeftRadius">0dp</item>
以及CustomAccentOverlay主题的所有其他角落以及相应的样式,但它不起作用。如何在按钮上将拐角半径设置为零?
谢谢你 索伦
答案 0 :(得分:6)
使用以下代码作为按钮。
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="NewApi"
android:color="@color/ripple_color">
<item android:drawable="@color/normal_state_button_background_color"/>
</ripple>
我将解释这些属性。
机器人:海拔=&#34; 0dp&#34;和android:stateListAnimator =&#34; @ null&#34;。按钮没有阴影。
android:background。将所需颜色设置为背景。它删除了圆角。
机器人:?前景=&#34; ATTR / selectableItemBackground&#34; 。按下按钮时会产生涟漪效应。
更新1:
看起来像View的android:foreground属性来自API 23.对于下面的API,在drawable-v21文件夹中创建一个带有涟漪的drawable并将其设置为按钮的背景,
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pressed_color"
android:state_pressed="true" />
<item android:drawable="@drawable/focused_color"
android:state_focused="true" />
<item android:drawable="@drawable/normal_color" />
</selector>
对于pre Lollipop版本,在具有相同名称的drawable文件夹中创建一个带有选择器的drawable。
meteor run ios
答案 1 :(得分:3)
第一个问题:如何删除按钮的阴影?
以下是答案: 只需将此属性添加到按钮
即可android:stateListAnimator="@null"
第二个问题:如何使按钮的角落锐利而不会失去标准的涟漪效果。 答案如下:但首先你必须制作两个同名的drawble文件,但一个用于api 21以下,一个用于api&gt; 21因为纹波仅可用于api> 21.现在我正在展示如何创建它。仔细阅读以下文字
右键单击drawble文件夹并选择new和“Drawble资源文件”,然后点击下一步然后将drawble命名为你想要的任何内容并按下ok。然后再次右键单击drawble文件夹并选择new和“Drawble resource file”并点击下一步,并将drawble命名为您之前为drawble文件夹命名的内容,但这次在底部您可以看到一个名为“available qualifiers”的部分。转到此部分,在最底部您可以看到“Version”,单击它然后你可以在右边看到一个箭头图标,点击它然后在“平台api级别”中添加21然后按ok。现在如果你展开drawble文件夹你可以看到你创建的drawble文件的两个文件。一旦api那个是21以下和上一次21.打开你创建的drawble文件,并确保你打开最后有“(v21)”。现在从那里删除所有内容并添加以下代码
<?xml version="1.0" encoding="utf-8"?>
<ripple android:color="?attr/colorControlHighlight" xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:radius="0dp"/>
<solid android:color="#D6D7D7"/>
</shape>
</item>
</ripple>
并将此属性添加到按钮
android:background="@drawable/youdrawblefilethatyouhavecreated"
现在,如果你运行你的应用程序,你可以看到没有阴影,你的按钮有尖角,如果你点击涟漪就会出现。
最后,您的按钮看起来像这样
<android.support.v7.widget.AppCompatButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button 1"
android:background="@drawable/yourcreatddrawblefile"
android:stateListAnimator="@null"/>
希望这有帮助!
答案 2 :(得分:3)
听起来你真的想要使用可点击的TextView而不是Button。默认情况下,TextView没有阴影并且有尖角,您可以附加一个点击监听器。请记住,Button只是一个花哨的TextView,它有很多可视化的附加组件,听起来你想删除很多它。
如果您想在TextView上保留涟漪并定义自己的背景,请设置android:foreground="?attr/selectableItemBackground"
答案 3 :(得分:0)
使用此代码
<android.support.v7.widget.AppCompatButton
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/colorAccent"
android:text="@string/button" />