'How to remove button shadow (android)
I want to remove the shadow from the button to make it seem more flat.
I have this right now:
But I want this:
Solution 1:[1]
Another alternative is to add
style="?android:attr/borderlessButtonStyle"
to your Button xml as documented here http://developer.android.com/guide/topics/ui/controls/button.html
An example would be
<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"
style="?android:attr/borderlessButtonStyle" />
Solution 2:[2]
A simpler way to do is adding this tag to your button:
android:stateListAnimator="@null"
though it requires API level 21 or more..
Solution 3:[3]
Kotlin
stateListAnimator = null
Java
setStateListAnimator(null);
XML
android:stateListAnimator="@null"
Solution 4:[4]
I use a custom style
<style name="MyButtonStyle" parent="@style/Widget.AppCompat.Button.Borderless"></style>
Don't forget to add
<item name="android:textAllCaps">false</item>
otherwise the button text will be in UpperCase.
Solution 5:[5]
Material desing buttons add to button xml:
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
Solution 6:[6]
try : android:stateListAnimator="@null"
Solution 7:[7]
Using this as the background for your button might help, change the color to your needs
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape android:shape="rectangle">
<solid android:color="@color/app_theme_light" />
<padding
android:left="8dp"
android:top="4dp"
android:right="8dp"
android:bottom="4dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/app_theme_dark" />
<padding
android:left="8dp"
android:top="4dp"
android:right="8dp"
android:bottom="4dp" />
</shape>
</item>
</selector>
Solution 8:[8]
All above answers are great, but I will suggest an other option:
<style name="FlatButtonStyle" parent="Base.Widget.AppCompat.Button">
<item name="android:stateListAnimator">@null</item>
<!-- more style custom here -->
</style>
Solution 9:[9]
the @Alt-Cat answer work for me!
R.attr.borderlessButtonStyle doesn't contain shadow.
and the document of button is great.
Also, you can set this style on your custom button, in second constructor.
public CustomButton(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.borderlessButtonStyle);
}
Solution 10:[10]
Instead of a Button, you can use a TextView and add a click listener in the java code.
I.e.
in the activity layout xml:
<TextView
android:id="@+id/btn_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:text="@string/btn_text"
android:gravity="center"
android:textColor="@color/colorAccent"
android:fontFamily="sans-serif-medium"
android:textAllCaps="true" />
in the activity java file:
TextView btnTextView = (TextView) findViewById(R.id.btn_text_view);
btnTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// handler code
}
});
Solution 11:[11]
With a custom button; use the style R.style.Widget_AppCompat_Button_Borderless
, Kotlin way-
class CSButton @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = R.style.Widget_AppCompat_Button_Borderless
) : AppCompatButton(context, attrs, defStyleAttr)
Solution 12:[12]
Simply
android:elevation="0dp"
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow