web-dev-qa-db-ja.com

Androidのボタンにスタイルを設定する方法は?

Resフォルダーに以下のファイルを定義しました。

styles_apptheme.xml

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

<!-- Generated with http://Android-holo-colors.com -->
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">

  <style name="ButtonAppTheme" parent="Android:Widget.Holo.Light.Button">
      <item name="Android:background">@drawable/apptheme_btn_default_holo_light</item>
  </style> 
</resources>

themes_apptheme.xml

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

<!-- Generated with http://Android-holo-colors.com -->
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">

  <style name="AppTheme" parent="@style/_AppTheme"/>

  <style name="_AppTheme" parent="Theme.AppCompat.Light">

    <item name="Android:editTextBackground">@drawable/apptheme_edit_text_holo_light</item>

    <item name="Android:buttonStyle">@style/ButtonAppTheme</item>

  </style>

</resources>

Layout.xmlファイルで、次のようにボタンを定義しました

<Button
        Android:id="@+id/btnAddTitle"
        Android:layout_below="@id/edEnterTitleValue"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/btn_AddTitle"
        Android:layout_margin="20dp"
/>

上記のボタンビューに次の行を追加すると、

Android:background="@style/ButtonAppTheme"

描画可能なリソースを背景属性に設定する必要があると言って、アプリケーションがクラッシュします。

だから私は以下の描画可能なファイルを作成しました-abc.xml

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_window_focused="false" Android:state_enabled="true"
        Android:drawable="@drawable/apptheme_btn_default_normal_holo_light" />
    <item Android:state_window_focused="false" Android:state_enabled="false"
        Android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" />
    <item Android:state_pressed="true"
        Android:drawable="@drawable/apptheme_btn_default_pressed_holo_light" />
    <item Android:state_focused="true" Android:state_enabled="true"
        Android:drawable="@drawable/apptheme_btn_default_focused_holo_light" />
    <item Android:state_enabled="true"
        Android:drawable="@drawable/apptheme_btn_default_normal_holo_light" />
    <item Android:state_focused="true"
        Android:drawable="@drawable/apptheme_btn_default_disabled_focused_holo_light" />
    <item
         Android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" />
</selector>

Android:background="@drawable/abc"を設定すると、ボタンに設定されたスタイルが表示されません。

ボタンのスタイルを設定する方法を教えてください。

ありがとう。

17
Prem

この方法で行うと、かなり簡単になります。

最初に、drawableフォルダーにbutton_selector.xmlを作成します。

<?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"  >
     <corners Android:radius="5dp" />
     <stroke Android:width="1dip" Android:color="@color/green_temp" />
     <gradient Android:angle="-90" Android:startColor="@color/green_temp" Android:endColor="@color/green_temp"  />            
 </shape>
</item>
<item Android:state_focused="true">
 <shape Android:shape="rectangle"  >
     <corners Android:radius="5dp" />
     <stroke Android:width="1dip" Android:color="#971E05" />
     <solid Android:color="#58857e"/>       
 </shape>
</item>  
<item >
<shape Android:shape="rectangle"  >
     <corners Android:radius="5dp" />
     <stroke Android:width="1dip" Android:color="@color/bright_green" />
     <gradient Android:angle="-90" Android:startColor="@color/green_temp" Android:endColor="@color/button_green" />            
 </shape>
</item>
</selector>

これらの色を、valuesフォルダーのcolors.xmlに追加します。

<!-- Green -->
<color name="green_temp">#23A96E</color>
<color name="green_dark">#159204</color>
<color name="bright_green">#02D8B0</color>
<color name="button_green">#10a54a</color>

最後に、layout.xmlの目的のボタンに、上記のセレクターから背景を配置します。

<Button
    Android:id="@+id/btnAddTitle"
    Android:layout_below="@id/edEnterTitleValue"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/btn_AddTitle"
    Android:background="@drawable/button_selector"
    Android:layout_margin="20dp"
/>

その後、ボタンはすべて完了し、必要な色でスタイル設定されます。

19
Crawler

Android Button Makerは、Android Apps。Androidこれらのボタンは、通常のpngボタンに比べて高速に読み込まれる形状描画可能なXMLコードに基づいて生成されます。設定パネルでボタンのプロパティをカスタマイズし、ソースコードを取得できます。

このリンクを確認してください ボタンメーカー

頭脳を割る必要はありません...このツールはそれを簡単にします

8
Harsha Vardhan

取り替える

Android:background="@style/ButtonAppTheme"

style="@style/ButtonAppTheme"

すべてが大丈夫です!

6
behnamizadi

代替手段としてこれを試してください。 resの下にdrawableフォルダーを作成してから、xmlファイルを作成し、コードの下にコピー&ペーストして、最初に試してから、要件に従ってカスタマイズします。

button_bg.xml

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

<solid Android:color="#00acc1"/>
<stroke Android:width="2dp" Android:color="#ffffff"/>
<corners Android:radius="2dp"/> </shape>

button_bg_pressed.xml

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

<solid Android:color="#006064"/>
<stroke Android:width="1dp" Android:color="#ffffff"/>
<corners Android:radius="2dp"/> </shape>

button_selector.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" 
        Android:drawable="@drawable/button_bg_pressed" /> 
<item Android:state_focused="false" Android:state_pressed="true" 
        Android:drawable="@drawable/button_bg_pressed" /> 
<item Android:drawable="@drawable/button_bg" /> </selector>

そして、ボタンxmlで、背景をbutton_selector.xmlとして設定します

<Button
    Android:id="@+id/btnAddTitle"
    Android:layout_below="@id/edEnterTitleValue"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/btn_AddTitle"
    Android:background="@drawable/button_selector"
    Android:layout_margin="20dp"/>

これはあなたのために仕事をします。この方法でボタン全体のスタイルをカスタマイズできます。

4
Kavin Prabhu

マテリアルデザインによってボタンのデフォルトのアニメーションを作成し、ボタンの色を変更する場合は、これを試してください。

<Button
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:padding="@dimen/padding_12"
    Android:text="button text here"
    Android:theme="@style/NavyBtn" />

style.xmlで

<style name="NavyBtn" parent="Theme.AppCompat.Light">
    <item name="colorButtonNormal">#020e39</item>
    <item name="Android:textColor">#FFFFFF</item>
</style>
2
Ting