ボタンの背景を透明に


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

ボーダー付きの透明なボタンを作成するには、こちらの回答をご覧ください
Basheer AL-MOMANI 2016年

'なぜTextViewを使用して、onClickのアクションを呼び出さないのですか?
Dula wnRp 2016年

回答:


360

背景を透明にするには、を実行しますandroid:background="@android:color/transparent"

ただし、セレクターを非常に奇妙な方法で使用しているため、問題は少し深いようです。使い方は間違っているように見えますが、実際に機能する場合は、背景画像をとしてスタイルに配置する必要があり<item/>ます。

Androidソースでのスタイルの使用方法を詳しく見てみましょう。ボタンをクリックしたときにテキストのスタイルが変更されることはありませんが、そこで目標を達成する方法については多くの優れたアイデアがあります。


1
私の明確な答えを見てください。私はあなたの問題を誤解して始めました。背景がスタイルに設定されます。
Steve Pomeroy

申し訳ありませんが、解決策は明確ではありません。@android:color / transparentを設定するだけでは、通常のボタンのオンタッチスタイルはサポートされません(背景を@nullに設定するのと同じです)。
gatoatigrado 2012年

@gatoatigrado:透明な領域をオレンジ色で囲んだり、陰影を付けたりしたいという意味ですか?その場合は、そのためのカスタム9パッチイメージを作成する必要があります。
Steve Pomeroy、

@StevePomeroy、はい、Android 4.1のデフォルトのボタン効果では、[ボタンを押すと]背景が明るい青になり、輪郭がさらに明るい青になります。
gatoatigrado 2012年

@gatoatigrado:わかりました。それが必要な場合は、透明なボタンを使用できません。あなたがそこで達成しようとしていることはわかりません。
スティーブポメロイ

121

背景を透明に設定する新しい方法を試してください

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

9
これは私が使用をお勧めするものです。このようにして、ボタンの美しいマテリアルデザインアニメーションを維持できます=)
Ryan Newsom

これはより良い答えです
マルコスダバロス

35

使用#0000(ゼロは4つのみ。それ以外の場合はと見なされます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 2016


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: UIをボタンXMLに適用する

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


0

以下のように、ボタン xml で属性android:backgroundを使用できます。

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

または、スタイルを使用できます

style="?android:attr/borderlessButtonStyle" 透明で影の少ない背景用。


-2

transparent(light gray)ボタンをクリックしたときと同じように背景色を適用します。

ButtonName.setOnClickListener()

上記の方法では、ボタンの背景色を設定します。


6
これが賛成されたことを心配しています。これを行わないでください。将来のメンテナがあなたの名前を呪います。セレクターで背景を設定し、押された場合と押されていない場合の1つのカラー/ドローアブルを用意します。リスナーでコードを変更するコードを記述しないでください。これは、これが行われる方法ではありません。
themightyjon 2015

-2

xmlファイルに以下の属性を追加することで簡単に行うことができます。このコードは十分にテストされました。

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

2
なぜこの回答を追加するのですか?この解決策は、投票数が最も多いものを含め、すでに他の2つの回答にあります。
Makyen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.