parent = "@ android:style / Widget.Button"でスタイルを使用することに関するCSmithの回答の最初の部分は、左寄せまたは右寄せのテキストなどのボタンのプロパティを変更するための最良の方法です。ただし、残りの回答では、独自のセレクターを作成する方法について説明しているため、デフォルトのボタンからセレクターを継承するソリューションを追加して、変更する特定のセレクターをオーバーライドするだけだと思いました。
デフォルトの動作が必要なセレクターにandroid:drawable = "@ android:drawable / btn_default"を入力するだけで、変更するセレクターにのみカスタムフィールドを指定できます。すべてのセレクターを継承するが、通常は灰色の代わりに透明な背景を持つボタンを作成しようとしている場合は、次のようにします(わかりやすくするために、CSmithの回答の最初の部分を複製します。CSmithに感謝します)。
カスタムスタイルを使用してボタンを定義します。
<Button id= ... style="@style/myButton" />
res / values / styles.xml:
<style name="myButton" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/myBackground</item>
...other changes to default button...
</style>
次に、すべてのセレクターを継承し、灰色で表示されているセレクターを上書きします:res / drawable / myBackground.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false"
android:drawable="@drawable/transparent_btn" />
<item android:state_pressed="true"
android:drawable="@android:drawable/btn_default" />
<item android:state_focused="true"
android:drawable="@android:drawable/btn_default" />
<item android:drawable="@drawable/transparent_btn" />
</selector>
そして、res / drawable /transparent_btn.xmlで:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@android:color/transparent" />
</shape>
注:この例では、ボタンが有効かどうかについて特定の動作が必要な場合は、state_enabledについては気にしません。これらのセレクターも上書きするだけです。