source

버튼 음영(안드로이드) 제거 방법

ittop 2023. 9. 9. 10:14
반응형

버튼 음영(안드로이드) 제거 방법

저는 단추에서 그림자를 제거해서 좀 더 평평하게 보이게 하고 싶습니다.

제가 지금 가지고 있습니다.

cancel button with shadow

하지만 난 이걸 원해요

cancel button without shadow

다른 대안은 다음을 추가하는 것입니다.

style="?android:attr/borderlessButtonStyle"

여기 http://developer.android.com/guide/topics/ui/controls/button.html 에 문서화된 대로 당신의 버튼 xml로.

예를 들면 다음과 같습니다.

<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" />

보다 간단한 방법은 이 태그를 단추에 추가하는 것입니다.

android:stateListAnimator="@null"

API 레벨 21 이상이 필요하지만..

코틀린

stateListAnimator = null

자바

setStateListAnimator(null);

XML

android:stateListAnimator="@null"

나는 커스텀 스타일을 사용합니다.

<style name="MyButtonStyle" parent="@style/Widget.AppCompat.Button.Borderless"></style>

추가하는 것을 잊지 마세요.

<item name="android:textAllCaps">false</item>

그렇지 않으면 단추 텍스트가 대문자로 표시됩니다.

재료 설계 버튼은 xml 버튼에 추가됩니다.style="@style/Widget.MaterialComponents.Button.UnelevatedButton"

시도:android:stateListAnimator="@null"

API 레벨 21이 필요합니다.

        android:outlineProvider="none"

단추의 배경으로 사용하면 필요에 따라 색상을 변경할 수 있습니다.

<?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>

위의 모든 답변은 훌륭하지만, 다른 옵션을 제안해 드리겠습니다.

<style name="FlatButtonStyle" parent="Base.Widget.AppCompat.Button">
 <item name="android:stateListAnimator">@null</item>
 <!-- more style custom here --> 
</style>


@Alt-Cat 답변이 가능합니다.

R.attr.borderlessButtonStyle에는 그림자가 없습니다.

그리고 버튼의 문서는 훌륭합니다.

또한 두 번째 생성자에서 사용자 정의 버튼에서 이 스타일을 설정할 수 있습니다.

    public CustomButton(Context context, AttributeSet attrs) {
        this(context, attrs, R.attr.borderlessButtonStyle);
    }

단추 대신 텍스트 보기를 사용하고 자바 코드에 클릭 수신기를 추가할 수 있습니다.

예.

활동 레이아웃 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" />

액티비티 자바 파일에서:

TextView btnTextView = (TextView) findViewById(R.id.btn_text_view);
btnTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // handler code
            }
        });

간단히

 android:elevation="0dp"

재료 구성요소 업데이트

이전에 다음과 같은 것을 사용한 적이 있는 경우:

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:buttonStyle">@style/NoShadowButton</item>
</style>

<style name="NoShadowButton" parent="Widget.AppCompat.Button">
    <item name="android:stateListAnimator">@null</item>
</style>

그리고 나처럼 당신은 왜 당신이 이주한 지금 더 이상 이것이 작동하지 않는지 머리를 긁적이고 있습니다.Theme.MaterialComponents.Light.*, buttonStyle은 AppCompat 버튼 스타일만을 가리키기 때문입니다 - buttonStyle 소재의 새로운 스타일이 있습니다.이것으로 문제가 해결되었습니다.

<style name="MyTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="materialButtonStyle">@style/Widget.MaterialComponents.Button.UnelevatedButton</item>
</style>

다음은 그 밖에 무엇이 달라졌는지, 어떻게 하면 제대로 이주할 수 있는지에 대한 좋은 가이드입니다.

사용자 지정 버튼을 사용하여 스타일 사용R.style.Widget_AppCompat_Button_Borderless, 코틀린 방식.

class CSButton @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = R.style.Widget_AppCompat_Button_Borderless
) : AppCompatButton(context, attrs, defStyleAttr)

이전에는 언급하지 않았지만 그림자가 없는 재료 단추를 사용하려면 다음과 같은 사용자 정의 스타일을 만들어 사용할 수 있습니다.

<style name="materialButtonNoShadow" parent="Widget.MaterialComponents.Button.UnelevatedButton">

그런 다음 xml 레이아웃에 적용합니다.

            <com.google.android.material.button.MaterialButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/noShadowButton"
            style="?attr/materialButtonNoShadow"/>

언급URL : https://stackoverflow.com/questions/28756035/how-to-remove-button-shadow-android

반응형