버튼 음영(안드로이드) 제거 방법
저는 단추에서 그림자를 제거해서 좀 더 평평하게 보이게 하고 싶습니다.
제가 지금 가지고 있습니다.
하지만 난 이걸 원해요
다른 대안은 다음을 추가하는 것입니다.
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
'source' 카테고리의 다른 글
Spring-Security의 기본 Authentication Manager는 무엇입니까?인증 방법은 무엇입니까? (0) | 2023.09.09 |
---|---|
텐서플로우 백엔드를 가진 케라스가 CPU나 GPU를 마음대로 사용하도록 강요할 수 있습니까? (0) | 2023.09.09 |
C에서 C++ 테이블 인라인 정의 (0) | 2023.09.09 |
JdbcStatement와 동등한 Mariadb 커넥터 세트LocalInfileInputStream입니다. (0) | 2023.09.09 |
스프링부트 웹플럭스 반응기 동시성 모델 (0) | 2023.09.09 |