투명으로 버튼 배경


177

버튼이 있습니다. 버튼을 누를 때 텍스트를 굵게 표시해야합니다. 그래서 나는 대담하고 정상적인 스타일을 썼습니다.

<style name="textbold" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">bold</item>
</style>
<style name="textregular" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">normal</item>
</style>

이제 button_states.xml이 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true"
    style="@style/textbold" />
<item android:state_focused="false" android:state_pressed="true"
    style="@style/textregular" />

<item style="@style/textregular" />
</selector> 

이 버튼의 레이아웃에서 배경도 투명하게 만들어야합니다 ... 어떻게합니까? 내 레이아웃 코드는 다음과 같습니다

<Button android:id="@+id/Btn" android:background="@drawable/button_states" />

스타일에 배경을 투명하게 포함 시키려면 어떻게해야합니까?


3
이렇게 좋은 답변을 많이 받아 들일 수 있습니다 ...
QED

체크 아웃 여기 답을 테두리 투명 버튼을 만들기 위해
바시르 AL-MOMANI에게

'TextView를 사용하고 onClick에서 액션을 호출하지 않는 이유는 무엇입니까?
Dula wnRp

답변:


360

배경을 투명하게 만들려면을 수행하십시오 android:background="@android:color/transparent".

그러나 셀렉터를 정말 이상한 방식으로 사용하기 때문에 문제가 조금 더 심해 보입니다. 실제로 사용하는 경우 배경 이미지를 스타일로 배치해야하지만 사용 방법이 잘못 된 것 같습니다 <item/>.

Android 소스에서 스타일이 어떻게 사용되는지 자세히 살펴보십시오. 버튼을 클릭해도 텍스트 스타일이 변경되지는 않지만 목표를 달성하는 방법에 대한 좋은 아이디어가 많이 있습니다.


1
명확한 답변을 살펴보십시오. 시작할 문제를 잘못 읽었습니다. 배경이 스타일로 설정됩니다.
Steve Pomeroy 2013

죄송합니다, 해결책이 확실하지 않습니다. @android : color / transparent를 설정하는 것만으로 일반 버튼의 온 터치 스타일을 지원하지 않으며 배경을 @null로 설정하는 것과 같습니다.
gatoatigrado

@gatoatigrado : 투명한 영역을 주황색으로 표시하거나 어떤 부분으로 음영 처리 하시겠습니까? 그렇다면이를위한 사용자 지정 9 패치 이미지를 만들어야합니다.
Steve Pomeroy

@StevePomeroy, 그렇습니다. Android 4.1의 기본 버튼 효과는 [온 버튼 누름] 배경이 연한 파란색이되고 더 밝은 파란색 윤곽선이됩니다.
gatoatigrado

@gatoatigrado : 알았어. 원하는 경우 투명 버튼을 사용할 수 없습니다. 나는 당신이 거기서 무엇을하려고하는지 잘 모르겠습니다.
Steve Pomeroy

121

배경을 투명하게 설정하는 새로운 방법을 시도하십시오

    android:background="?android:attr/selectableItemBackground"

9
이것이 내가 사용하는 것이 좋습니다. 이 방법을 사용하면) = 당신의 버튼에 아름다운 재료 설계 애니메이션을 계속 얻을
라이언 뉴섬에게

이 더 나은 답변입니다
마르코스 Dávalos

35

사용하십시오 #0000(그렇지 않으면 네 개의 0만으로 간주됩니다 black) 이것은 투명한 색상 코드입니다. 직접 사용할 수 있지만 color.xml에서 색상을 정의하여 코드를 재사용 할 수 있도록하는 것이 좋습니다.


9
운 좋게도 이것은 이미 우리에게 다음과 같이 정의되어 있습니다.@android:color/transparent
Richard Le Mesurier

34

이것을 Xml에 추가하십시오 -android:background="@android:color/transparent"

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Button"
            android:background="@android:color/transparent"
            android:textStyle="bold"/>

32

xml에서 다음을 사용할 수도 있습니다.

android:background="@null"

또는 코드 :

buttonVariable.setBackgroundColor(Color.TRANSPARENT);

대안을 제공하는 것에 대한 찬성, 모든 옵션을 보는 것을 좋아하십시오!
Burkely91

18

나는 이것을 XML로 달성했다.

android:background="@android:color/transparent"

9

나는 사용했다

btn.setBackgroundColor(Color.TRANSPARENT);

android:background="@android:color/transparent"

btn.setBackgroundColor (Color.TRANSPARENT); 나를 위해 잘 작동
jay_mziray

8

선택기는 스타일이 아닌 드로어 블에만 작동합니다. 참고


먼저 , 버튼 배경을 투명하게 만들려면 머티리얼 디자인 애니메이션에 영향을 미치지 않으므로 다음 속성을 사용하십시오.

style="?attr/buttonBarButtonStyle"

버튼 스타일을 지정하는 방법에는 여러 가지가 있습니다. 이 튜토리얼을 확인하십시오 .

둘째 , 텍스트를 굵게 표시하려면 다음 Java 코드를 사용하십시오.

btn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
            // When the user clicks the Button
            case MotionEvent.ACTION_DOWN:
                btn.setTypeface(Typeface.DEFAULT_BOLD);
                break;

            // When the user releases the Button
            case MotionEvent.ACTION_UP:
                btn.setTypeface(Typeface.DEFAULT);
                break;
        }
        return false;
    }
});

1

색상 알파 채널을 설정하여이를 달성 할 수 있습니다.

색 구성표는 #AARRGGBB와 같습니다. A는 알파 채널 (투명도), R은 빨간색, G는 녹색, B는 파란색을 나타냅니다.


1

1 단계 : 드로어 블 및 복사 붙여 넣기에서 새 리소스 파일 만들기

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke android:color="#fff" android:width="2dp"/>
    <corners android:radius="25dp"/>
    <padding android:right="15dp" android:top="15dp" android:bottom="15dp" android:left="15dp"/>
</shape>

ButtonUI로 저장하십시오 (말하자).

2 단계 : 버튼 xml에 UI 적용

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="join the crew"
  android:background="@drawable/ButtonUI"
  android:textColor="#fff"/>

0

암호:

button.setVisibility(View.INVISIBLE);

Xml :

android:background="@android:color/transparent"

0

아래와 같이 Button xml 에 android : background 속성을 사용할 수 있습니다 .

android:background="?android:attr/selectableItemBackground"

또는 우리는 스타일 을 사용할 수 있습니다

style="?android:attr/borderlessButtonStyle" 투명하고 그림자가 적은 배경.


-2

transparent(light gray)단추를 클릭 할 때 와 같이 배경색을 적용 합니다.

ButtonName.setOnClickListener()

위의 방법에서 버튼의 배경색을 설정합니다.


6
이것이 불쾌하다고 걱정했다. 이러지 마십시오. 미래의 관리자는 당신의 이름을 저주 할 것입니다. 선택기로 배경을 설정하고 눌렀을 때 한 가지 색상 / 드로어 블이 있고 그렇지 않은 것이 있습니다. 리스너에서 코드를 변경하는 코드를 작성하지 마십시오. 이것이 수행되는 방식이 아닙니다.
themightyjon

-2

xml 파일에 아래 속성을 추가하여 쉽게 할 수 있습니다. 이 코드는 많은 시간을 테스트했습니다.

android:background="@android:color/transparent"

2
이 답변을 왜 추가해야합니까? 이 솔루션은 이미 가장 많은 표를 얻은 답변을 포함하여 다른 두 가지 답변에 있습니다.
Makyen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.