2011-02-10 45 views
124

ボタンがあります。私がボタンを押すと、テキストを太字にする必要があります。だから太字のスタイルを書きました&普通。私は、それはどのように行います...私はあまりにも透明として背景を行う必要があり、このボタンのための私のレイアウトでは透明なボタンの背景

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

<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がありますか?私のレイアウトコードは:

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

私のスタイルで透明な背景をどうやって入れますか?

+3

... – QED

+0

チェックアウト[ここで、この答え](http://stackoverflow.com/questions/12856661/how-to-make-button-transparent -in-my-app-yet-visible#answer-12856901)境界線のある透明なボタンを作成する –

+0

「TextViewを使用してonClickでそのアクションを呼び出すのはなぜですか? –

答えて

0

ボタンをクリックすると、背景色がtransparent(light gray)として適用されます。

ButtonName.setOnClickListener() 

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

+4

これが賞賛されたことを心配しています。これをしないでください。将来のメンテナーがあなたの名前を呪います。セレクタで背景を設定し、押された色と描画可能な色と描画可能な色と描画可能な色とを持っています。リスナーでそれを変更するためのコードを書かないでください。これはどのように行われますか。 – themightyjon

295

背景を透明にするには、android:background="@android:color/transparent"を実行してください。

しかし、セレクタを本当に奇妙な方法で使用しているので、問題はもう少し深いようです。あなたがそれを使用している方法は間違っているようですが、実際にはうまくいけば、スタイルの背景イメージを<item/>として置くべきです。

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

+0

私は既にアンドロイドを与えています:xmlとしての背景.. – Mathew

+1

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

+0

+1すばらしい答え!ご協力ありがとうございました! – BlackHatSamurai

33

#0000(それ以外の場合はとみなされます)これは透明のカラーコードです。直接使用することもできますが、コードの再利便性を高めるために、color.xmlで色を定義することをお勧めします。

+9

幸いにも、これはすでに '@android:color/transparent'として定義されています –

28

あなた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"/> 
24

を:あなたのXMLで を:

android:background="@null" 

またはコードで:

buttonVariable.setBackgroundColor(Color.TRANSPARENT); 
+0

代替手段を与えるUpvote、すべてのオプションを見るのが大好き! – Burkely91

66

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

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

これは私が使用することをお勧めします。この方法で、ボタンの美しい素材デザインのアニメーションを維持できます=) –

5

は私が

btn.setBackgroundColor(Color.TRANSPARENT); 

を使用
android:background="@android:color/transparent" 
0

コード:

button.setVisibility(View.INVISIBLE); 

のXml:

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

これは、アルファチャンネルの色を設定することで達成できます。

カラースキームは#AARRGGBBと同じです。Aはアルファチャンネル(透明)を表し、Rは赤を表し、Gは緑を表し、Bは青を表します。

1

セレクタは、スタイルではなく、ドロワブルでのみ機能します。これは、材料設計のアニメーションに影響を与えないように、まずReference


は、ボタンの背景透明の使用次の属性作るために:

style="?attr/buttonBarButtonStyle" 

はあなたのボタンのスタイルを設定するには多くあります。 this tutorialを確認してください。押され、この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; 
    } 
}); 
2

私はアンドロイドとXMLででこれを実現:背景= "@アンドロイド:カラー/透明"

0

xmlファイルに下記の属性を追加することで簡単に行うことができます。このコードはかなりの時間テストされています。したがって、これらの良い答えの多くは、今では受け入れることができ

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