Customizing Theme and Style for Material Design : Droid Kaigi 2016

0
-1

Published on

テーマやスタイル活用できていますか?

本セッションでは最初にテーマ・スタイルの基礎を解説し、アプリ用のテーマの正しいカスタマイズ方法を紹介します。その後ステータスバーの透明化など新しいバージョンで追加された機能と、それらをバージョンごとに切り分ける指定方法を紹介します。最後にAppCompatで用意されているMaterial Designを実現するためのテーマ・スタイルを見ていきます。AppCompatで使えるのはcolorPrimaryやcolorAccentだけではありません。WidgetやTextAppearanceなど、レイアウトXMLで直接指定するのに便利なものもいろいろ用意されています。これらの定義と活用方法を紹介します。


対象者
- テーマ・スタイルをなんとなく使っている人
- 正しいカスタマイズ方法を知りたい人
- 新しいバージョンで追加されたテーマ属性を知りたい人
- AppCompatのスタイルを活用したい人

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
0
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Customizing Theme and Style for Material Design : Droid Kaigi 2016

  1. 1. - -
  2. 2. <Button
 style="@style/Widget.AppCompat.Button.Small"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
  3. 3. <activity
 android:name=".SampleActivity"
 android:theme="@style/AppTheme" /> <Button
 style="@style/Widget.AppCompat.Button.Small"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
  4. 4. <EditText
 android:textColor="#333333" /> <EditText
 style="@style/MyTextView" /> <style name="MyTextView">
 <item name="android:textColor">#333333</item>
 </style> <style name="AppTheme" parent="…">
 <item name="editTextColor">#333333</item>
 </style>
  5. 5. <style name="Theme.AppCompat.NoActionBar">
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>
 </style> <style name=“Theme.AppCompat" parent="Base.Theme.AppCompat"/>
  6. 6. <style name="Theme.AppCompat.DialogWhenLarge" parent="Base.Theme.AppCompat.DialogWhenLarge">
 values/values.xml <style name="Base.Theme.AppCompat.DialogWhenLarge" parent="Theme.AppCompat"/>
 values-large/values-large.xml <style name="Base.Theme.AppCompat.DialogWhenLarge" parent="Base.Theme.AppCompat.Dialog.FixedSize"/>
  7. 7. <style name="Base.Theme.AppCompat.Dialog.FixedSize">
 <item name="windowFixedWidthMajor">@dimen/abc_dialog_fixed_width_major</item>
 <item name="windowFixedWidthMinor">@dimen/abc_dialog_fixed_width_minor</item>
 <item name="windowFixedHeightMajor">@dimen/abc_dialog_fixed_height_major</item> <item name="windowFixedHeightMinor">@dimen/abc_dialog_fixed_height_minor</item> </style> values/values.xml <item name="abc_dialog_fixed_height_major" type="dimen">80%</item>
 <item name="abc_dialog_fixed_height_minor" type="dimen">100%</item>
 <item name="abc_dialog_fixed_width_major" type="dimen">320dp</item>
 <item name="abc_dialog_fixed_width_minor" type="dimen">320dp</item>
 values-large/values-large.xml <item name="abc_dialog_fixed_height_major" type="dimen">60%</item>
 <item name="abc_dialog_fixed_height_minor" type="dimen">90%</item>
 <item name="abc_dialog_fixed_width_major" type="dimen">60%</item>
 <item name="abc_dialog_fixed_width_minor" type="dimen">90%</item>
 values-xlarge/values-xlarge.xml <item name="abc_dialog_fixed_height_major" type="dimen">60%</item>
 <item name="abc_dialog_fixed_height_minor" type="dimen">90%</item>
 <item name="abc_dialog_fixed_width_major" type="dimen">50%</item>
 <item name="abc_dialog_fixed_width_minor" type="dimen">70%</item>
  8. 8. <style name="Theme.DroidKaigi.DialogWhenLarge" parent="Theme.AppCompat.DialogWhenLarge">
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>
 </style>
  9. 9. <style name="Theme.DroidKaigi.DialogWhenLarge" parent="Theme.AppCompat.DialogWhenLarge">
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>
 </style>
  10. 10. <!-- 黒系 -->
 <style name="Theme.DroidKaigi" parent="Theme.AppCompat">
 </style>
 
 <style name="Theme.DroidKaigi.NoActionBar">
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>
 </style>
 
 <!-- 白系 -->
 <style name="Theme.DroidKaigi.Light" parent="Theme.AppCompat.Light.DarkActionBar">
 </style>
 
 <style name="Theme.DroidKaigi.Light.NoActionBar">
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>
 </style>
  11. 11. <!-- 黒系 -->
 <style name="Theme.DroidKaigi" parent="Theme.AppCompat">
 </style>
 
 <style name="Theme.DroidKaigi.NoActionBar">
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>
 </style>
 
 <!-- 白系 -->
 <style name=“Theme.DroidKaigi.Light" parent="Theme.AppCompat.Light.DarkActionBar">
 </style>
 
 <style name="Theme.DroidKaigi.Light.NoActionBar">
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>
 </style>
  12. 12. <!-- textAppearance -->
 <style name="TextAppearance.DroidKaigi.Title" parent="TextAppearance.AppCompat.Title">
 <item name="android:textSize">21sp</item>
 </style>
 
 <style name="TextAppearance.DroidKaigi.Title.Inverse" parent="TextAppearance.AppCompat.Title.Inverse">
 <item name="android:textSize">21sp</item>
 </style>
 
 <style name="TextAppearance.DroidKaigi.Subhead" parent="TextAppearance.AppCompat.Subhead">
 <item name="android:textSize">17sp</item>
 </style>
 
 <style name="TextAppearance.DroidKaigi.Subhead.Inverse" parent="TextAppearance.AppCompat.Subhead.Inverse">
 <item name="android:textSize">17sp</item>
 </style>
  13. 13. <style name="TextAppearance.DroidKaigi.Body2" parent="TextAppearance.AppCompat.Body2">
 <item name="android:textSize">15sp</item>
 </style>
 
 <style name="TextAppearance.DroidKaigi.Body1" parent="TextAppearance.AppCompat.Body1">
 <item name="android:textSize">15sp</item>
 </style>
 
 <style name="TextAppearance.DroidKaigi.Caption" parent="TextAppearance.AppCompat.Caption">
 <item name="android:textSize">13sp</item>
 </style>
 
 <style name="TextAppearance.DroidKaigi.Button" parent="TextAppearance.AppCompat.Button">
 <item name="android:textSize">15sp</item>
 </style>
  14. 14. カスタムビューをつくるときはこれらを継承する
  15. 15. Button
  16. 16. <style name="Base.Widget.AppCompat.Button" parent="android:Widget">
 <item name="android:background">@drawable/abc_btn_default_mtrl_shape</item>
 <item name="android:textAppearance">?android:attr/textAppearanceButton</item>
 <item name="android:minHeight">48dip</item>
 <item name="android:minWidth">88dip</item>
 <item name="android:focusable">true</item>
 <item name="android:clickable">true</item>
 <item name="android:gravity">center_vertical|center_horizontal</item>
 </style>
 <style name="Base.Widget.AppCompat.Button.Borderless">
 <item name="android:background">@drawable/abc_btn_borderless_material</item>
 </style>
 <style name="Base.Widget.AppCompat.Button.Borderless.Colored">
 <item name="android:textColor">?attr/colorAccent</item>
 </style>
 <style name="Base.Widget.AppCompat.Button.Colored">
 <item name="android:background">@drawable/abc_btn_colored_material</item>
 <item name="android:textAppearance">@style/ TextAppearance.AppCompat.Widget.Button.Inverse</item>
 </style>
 <style name="Base.Widget.AppCompat.Button.Small">
 <item name="android:minHeight">48dip</item>
 <item name="android:minWidth">48dip</item>
 </style>
  17. 17. <style name="AppTheme.ButtonOverlay">
 <item name="colorAccent">#FF4081</item>
 </style> <Button
 style="@style/Widget.AppCompat.Button.Colored"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="b"
 android:theme="@style/AppTheme.ButtonOverlay" />
  18. 18. CompoundButton
  19. 19. <style name="Base.Widget.AppCompat.CompoundButton.CheckBox" parent="android:Widget.CompoundButton.CheckBox">
 <item name="android:button">?android:attr/listChoiceIndicatorMultiple</item>
 <item name="android:background">?attr/controlBackground</item>
 </style>
 <style name="Base.Widget.AppCompat.CompoundButton.RadioButton" parent="android:Widget.CompoundButton.RadioButton">
 <item name="android:button">?android:attr/listChoiceIndicatorSingle</item>
 <item name="android:background">?attr/controlBackground</item>
 </style>
 <style name="Base.Widget.AppCompat.CompoundButton.Switch" parent="android:Widget.CompoundButton">
 <item name="track">@drawable/abc_switch_track_mtrl_alpha</item>
 <item name="android:thumb">@drawable/abc_switch_thumb_material</item>
 <item name="switchTextAppearance">@style/ TextAppearance.AppCompat.Widget.Switch</item>
 <item name="android:background">?attr/controlBackground</item>
 <item name="showText">false</item>
 <item name="switchPadding">@dimen/abc_switch_padding</item>
 <item name="android:textOn">@string/abc_capital_on</item>
 <item name="android:textOff">@string/abc_capital_off</item>
 </style>
  20. 20. TintManager の TINT_CHECKABLE_BUTTON_LIST
  21. 21. <style name="AppTheme" parent="Theme.AppCompat">
 <item name="colorControlActivated">#FF4081</item>
 <item name="colorControlNormal">#3F51B5</item>
 </style>
  22. 22. <style name="AppTheme" parent="Theme.AppCompat">
 <item name="colorControlActivated">#FF4081</item>
 <item name="android:colorForeground">#3F51B5</item>
 <item name="colorSwitchThumbNormal">@color/switch_thumb</item>
 </style> <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#66303F9F" android:state_enabled="false" />
 <item android:color="#FFFFFF" />
 </selector>
  23. 23. EditText
  24. 24. <style name="Base.V7.Widget.AppCompat.EditText" parent="android:Widget.EditText">
 <item name="android:background">?attr/editTextBackground</item>
 <item name="android:textColor">?attr/editTextColor</item>
 <item name="android:textAppearance">?android:attr/ textAppearanceMediumInverse</item>
 </style>
  25. 25. <style name="AppTheme" parent="Theme.AppCompat">
 <item name="colorControlActivated">#FF4081</item>
 <item name="colorControlNormal">#3F51B5</item>
 </style>
  26. 26. <style name="Theme.DroidKaigi" parent="Theme.AppCompat">
 <item name="editTextStyle">@style/Widget.DroidKaigi.EditText</item>
 <!-- ↑だけで十分だが、プレビューに適用させるにはこれも必要 -->
 <item name="android:editTextStyle">@style/Widget.DroidKaigi.EditText</item>
 </style>
 <style name="Widget.DroidKaigi.EditText" parent="Widget.AppCompat.EditText">
 <item name="android:textAppearance">@style/ TextAppearance.DroidKaigi.Widget.EditText</item>
 </style> <style name="TextAppearance.DroidKaigi.Widget.EditText" parent="TextAppearance.AppCompat.Medium.Inverse">
 <item name="android:textSize">17sp</item>
 </style>
  27. 27. <style name="Platform.AppCompat" parent="android:Theme">
 … <item name="android:textColorHint">@color/ hint_foreground_material_dark</item>
 <item name="android:textColorHintInverse">@color/ hint_foreground_material_light</item> … </style> <color name="hint_foreground_material_dark">@color/ bright_foreground_disabled_material_dark</color>
 <color name="hint_foreground_material_light">@color/ bright_foreground_disabled_material_light</color>
 <color name="bright_foreground_disabled_material_dark">#80ffffff</color> <color name="bright_foreground_disabled_material_light">#80000000</color
  28. 28. <style name="Theme.DroidKaigi.Light" parent="...">
 <item name="android:textColorHint">#61000000</item>
 </style>
  29. 29. Spinner
  30. 30. <style name="Base.Widget.AppCompat.Spinner" parent="Platform.Widget.AppCompat.Spinner">
 <item name="android:background">@drawable/abc_spinner_mtrl_am_alpha</item>
 <item name="android:popupBackground">@drawable/abc_popup_background_mtrl_mult</ item>
 <item name="android:dropDownSelector">?attr/listChoiceBackgroundIndicator</item>
 <item name="android:dropDownVerticalOffset">0dip</item>
 <item name="android:dropDownHorizontalOffset">0dip</item>
 <item name="android:dropDownWidth">wrap_content</item>
 <item name="android:clickable">true</item>
 <item name="android:gravity">left|start|center_vertical</item>
 <item name="overlapAnchor">true</item>
 </style>
 <style name="Base.Widget.AppCompat.Spinner.Underlined">
 <item name="android:background">@drawable/ abc_spinner_textfield_background_material</item>
 </style> <style name="Base.Widget.AppCompat.TextView.SpinnerItem" parent="android:Widget.TextView.SpinnerItem">
 <item name="android:textAppearance">@style/ TextAppearance.AppCompat.Widget.TextView.SpinnerItem</item>
 <item name="android:paddingLeft">8dp</item>
 <item name="android:paddingRight">8dp</item>
 </style>
  31. 31. <resources>
 <string-array name="android">
 <item>Donuts</item>
 <item>Eclair</item>
 <item>Froyo</item>
 </string-array>
 </resources> <Spinner
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:entries="@array/android" />
  32. 32. public AbsSpinner(Context context, AttributeSet attrs, int defStyleAttr, int defSt super(context, attrs, defStyleAttr, defStyleRes);
 initAbsSpinner();
 
 final TypedArray a = context.obtainStyledAttributes(
 attrs, R.styleable.AbsSpinner, defStyleAttr, defStyleRes);
 
 final CharSequence[] entries = a.getTextArray(R.styleable.AbsSpinner_entries); if (entries != null) {
 final ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>( context, R.layout.simple_spinner_item, entries);
 adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
 setAdapter(adapter);
 }
 
 a.recycle();
 }
  33. 33. <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1"
 style="?android:attr/spinnerItemStyle"
 android:singleLine="true"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:ellipsize="marquee"
 android:textAlignment="inherit"/> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/an android:id="@android:id/text1"
 style="?android:attr/spinnerDropDownItemStyle"
 android:singleLine="true"
 android:layout_width="match_parent"
 android:layout_height="?android:attr/dropdownListPreferredItemHei android:ellipsize="marquee"/>
  34. 34. <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1"
 style="?android:attr/spinnerItemStyle"
 android:singleLine="true"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:ellipsize="marquee"
 android:textAlignment="inherit"/> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/an android:id="@android:id/text1"
 style="?android:attr/spinnerDropDownItemStyle"
 android:singleLine="true"
 android:layout_width="match_parent"
 android:layout_height="?android:attr/dropdownListPreferredItemHei android:ellipsize="marquee"/> Widget.AppCompat.TextView.SpinnerItem
  35. 35. <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1"
 style="?android:attr/spinnerItemStyle"
 android:singleLine="true"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:ellipsize="marquee"
 android:textAlignment="inherit"/> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/an android:id="@android:id/text1"
 style="?android:attr/spinnerDropDownItemStyle"
 android:singleLine="true"
 android:layout_width="match_parent"
 android:layout_height="?android:attr/dropdownListPreferredItemHei android:ellipsize="marquee"/> Widget.AppCompat.TextView.SpinnerItem Widget.AppCompat.ListView.DropDown
  36. 36. <style name="Theme.DroidKaigi" parent="Theme.AppCompat">
 <item name="android:spinnerItemStyle">@style/ Widget.DroidKaigi.TextView.SpinnerItem</item>
 </style>
 <style name="Widget.DroidKaigi.TextView.SpinnerItem" parent="Widget.AppCompat.TextView.SpinnerItem">
 <item name="android:minHeight">?attr/ listPreferredItemHeightSmall</item>
 <item name="android:gravity">center_vertical</item>
 </style>
  37. 37. SeekBar
  38. 38. <style name="Base.Widget.AppCompat.SeekBar" parent="android:Widget">
 <item name="android:indeterminateOnly">false</item>
 <item name="android:progressDrawable">@drawable/ abc_seekbar_track_material</item>
 <item name="android:indeterminateDrawable">@drawable/ abc_seekbar_track_material</item>
 <item name="android:thumb">@drawable/abc_seekbar_thumb_material</item>
 <item name="android:focusable">true</item>
 <item name="android:paddingLeft">16dip</item>
 <item name="android:paddingRight">16dip</item>
 </style>
  39. 39. <style name="AppTheme" parent="Theme.AppCompat">
 <item name="colorControlActivated">#FF4081</item>
 <item name="colorControlNormal">#3F51B5</item>
 </style>
  40. 40. ProgressBar
  41. 41. ActionBar
  42. 42. <style name="Platform.ThemeOverlay.AppCompat" parent=""/>
 <style name="Platform.ThemeOverlay.AppCompat.Dark">
 <!-- Action Bar styles -->
 <item name="actionBarItemBackground">@drawable/abc_item_background_holo_dark</item>
 <item name="actionDropDownStyle">@style/Widget.AppCompat.Spinner.DropDown.ActionBar</ite <item name="selectableItemBackground">@drawable/abc_item_background_holo_dark</item>
 
 <!-- SearchView styles -->
 <item name="android:autoCompleteTextViewStyle">@style/Widget.AppCompat.AutoCompleteTextV <item name="android:dropDownItemStyle">@style/Widget.AppCompat.DropDownItem.Spinner</ite </style>
 <style name="Platform.ThemeOverlay.AppCompat.Light">
 <item name="actionBarItemBackground">@drawable/abc_item_background_holo_light</item>
 <item name="actionDropDownStyle">@style/Widget.AppCompat.Light.Spinner.DropDown.ActionBa <item name="selectableItemBackground">@drawable/abc_item_background_holo_light</item>
 
 <!-- SearchView attributes -->
 <item name="android:autoCompleteTextViewStyle">@style/Widget.AppCompat.Light.AutoComplet <item name="android:dropDownItemStyle">@style/Widget.AppCompat.DropDownItem.Spinner</ite </style> ベーステーマなし ActionBar系のスタイルだけ指定
  43. 43. <style name="Base.ThemeOverlay.AppCompat" parent="Platform.ThemeOverlay.AppCompat"/>
 <style name="Base.ThemeOverlay.AppCompat.ActionBar">
 <item name="colorControlNormal">?android:attr/textColorPrimary</item>
 <item name="searchViewStyle">@style/Widget.AppCompat.SearchView.ActionBar</item>
 </style>
  44. 44. <style name="Base.ThemeOverlay.AppCompat" parent="Platform.ThemeOverlay.AppCompat"/>
 <style name="Base.ThemeOverlay.AppCompat.ActionBar">
 <item name="colorControlNormal">?android:attr/textColorPrimary</item>
 <item name="searchViewStyle">@style/Widget.AppCompat.SearchView.ActionBar</item>
 </style> ActionBar の ←, オーバーフローアイコンの色
  45. 45. <style name="Base.ThemeOverlay.AppCompat.Dark" parent="Platform.ThemeOverlay.AppCompat.Dark" <item name="android:windowBackground">@color/background_material_dark</item>
 <item name="android:colorForeground">@color/foreground_material_dark</item>
 <item name="android:colorForegroundInverse">@color/foreground_material_light</item>
 <item name="android:colorBackground">@color/background_material_dark</item>
 <item name="android:colorBackgroundCacheHint">@color/abc_background_cache_hint_selector_ 
 <item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item>
 <item name="android:textColorPrimaryInverse">@color/abc_primary_text_material_light</ite <item name="android:textColorPrimaryDisableOnly">@color/abc_primary_text_disable_only_ma <item name="android:textColorSecondary">@color/abc_secondary_text_material_dark</item>
 <item name="android:textColorSecondaryInverse">@color/abc_secondary_text_material_light< <item name="android:textColorTertiary">@color/abc_secondary_text_material_dark</item>
 <item name="android:textColorTertiaryInverse">@color/abc_secondary_text_material_light</ <item name="android:textColorHint">@color/hint_foreground_material_dark</item>
 <item name="android:textColorHintInverse">@color/hint_foreground_material_light</item>
 <item name="android:textColorHighlight">@color/highlighted_text_material_dark</item>
 
 <item name="colorControlNormal">?android:attr/textColorSecondary</item>
 <item name="colorControlHighlight">@color/ripple_material_dark</item>
 <item name="colorButtonNormal">@color/button_material_dark</item>
 <item name="colorSwitchThumbNormal">@color/switch_thumb_material_dark</item>
 
 <!-- Used by MediaRouter -->
 <item name="isLightTheme">false</item>
 </style> <style name="Base.ThemeOverlay.AppCompat.Dark.ActionBar">
 <item name="colorControlNormal">?android:attr/textColorPrimary</item>
 <item name="searchViewStyle">@style/Widget.AppCompat.SearchView.ActionBar</item>
 </style>
  46. 46. <style name="Base.ThemeOverlay.AppCompat.Dark" parent="Platform.ThemeOverlay.AppCompat.Dark" <item name="android:windowBackground">@color/background_material_dark</item>
 <item name="android:colorForeground">@color/foreground_material_dark</item>
 <item name="android:colorForegroundInverse">@color/foreground_material_light</item>
 <item name="android:colorBackground">@color/background_material_dark</item>
 <item name="android:colorBackgroundCacheHint">@color/abc_background_cache_hint_selector_ 
 <item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item>
 <item name="android:textColorPrimaryInverse">@color/abc_primary_text_material_light</ite <item name="android:textColorPrimaryDisableOnly">@color/abc_primary_text_disable_only_ma <item name="android:textColorSecondary">@color/abc_secondary_text_material_dark</item>
 <item name="android:textColorSecondaryInverse">@color/abc_secondary_text_material_light< <item name="android:textColorTertiary">@color/abc_secondary_text_material_dark</item>
 <item name="android:textColorTertiaryInverse">@color/abc_secondary_text_material_light</ <item name="android:textColorHint">@color/hint_foreground_material_dark</item>
 <item name="android:textColorHintInverse">@color/hint_foreground_material_light</item>
 <item name="android:textColorHighlight">@color/highlighted_text_material_dark</item>
 
 <item name="colorControlNormal">?android:attr/textColorSecondary</item>
 <item name="colorControlHighlight">@color/ripple_material_dark</item>
 <item name="colorButtonNormal">@color/button_material_dark</item>
 <item name="colorSwitchThumbNormal">@color/switch_thumb_material_dark</item>
 
 <!-- Used by MediaRouter -->
 <item name="isLightTheme">false</item>
 </style> <style name="Base.ThemeOverlay.AppCompat.Dark.ActionBar">
 <item name="colorControlNormal">?android:attr/textColorPrimary</item>
 <item name="searchViewStyle">@style/Widget.AppCompat.SearchView.ActionBar</item>
 </style> 背景と色を指定
  47. 47. <style name="Base.ThemeOverlay.AppCompat.Light" parent="Platform.ThemeOverlay.AppCompat.Ligh <item name="android:windowBackground">@color/background_material_light</item>
 <item name="android:colorForeground">@color/foreground_material_light</item>
 <item name="android:colorForegroundInverse">@color/foreground_material_dark</item>
 <item name="android:colorBackground">@color/background_material_light</item>
 <item name="android:colorBackgroundCacheHint">@color/abc_background_cache_hint_selector_ 
 <item name="android:textColorPrimary">@color/abc_primary_text_material_light</item>
 <item name="android:textColorPrimaryInverse">@color/abc_primary_text_material_dark</item <item name="android:textColorSecondary">@color/abc_secondary_text_material_light</item>
 <item name="android:textColorSecondaryInverse">@color/abc_secondary_text_material_dark</ <item name="android:textColorTertiary">@color/abc_secondary_text_material_light</item>
 <item name="android:textColorTertiaryInverse">@color/abc_secondary_text_material_dark</i <item name="android:textColorPrimaryDisableOnly">@color/abc_primary_text_disable_only_ma <item name="android:textColorPrimaryInverseDisableOnly">@color/abc_primary_text_disable_ <item name="android:textColorHint">@color/hint_foreground_material_light</item>
 <item name="android:textColorHintInverse">@color/hint_foreground_material_dark</item>
 <item name="android:textColorHighlight">@color/highlighted_text_material_light</item>
 
 <item name="colorControlNormal">?android:attr/textColorSecondary</item>
 <item name="colorControlHighlight">@color/ripple_material_light</item>
 <item name="colorButtonNormal">@color/button_material_light</item>
 <item name="colorSwitchThumbNormal">@color/switch_thumb_material_light</item>
 
 <!-- Used by MediaRouter -->
 <item name="isLightTheme">true</item>
 </style>
  48. 48. <style name="Base.ThemeOverlay.AppCompat.Light" parent="Platform.ThemeOverlay.AppCompat.Ligh <item name="android:windowBackground">@color/background_material_light</item>
 <item name="android:colorForeground">@color/foreground_material_light</item>
 <item name="android:colorForegroundInverse">@color/foreground_material_dark</item>
 <item name="android:colorBackground">@color/background_material_light</item>
 <item name="android:colorBackgroundCacheHint">@color/abc_background_cache_hint_selector_ 
 <item name="android:textColorPrimary">@color/abc_primary_text_material_light</item>
 <item name="android:textColorPrimaryInverse">@color/abc_primary_text_material_dark</item <item name="android:textColorSecondary">@color/abc_secondary_text_material_light</item>
 <item name="android:textColorSecondaryInverse">@color/abc_secondary_text_material_dark</ <item name="android:textColorTertiary">@color/abc_secondary_text_material_light</item>
 <item name="android:textColorTertiaryInverse">@color/abc_secondary_text_material_dark</i <item name="android:textColorPrimaryDisableOnly">@color/abc_primary_text_disable_only_ma <item name="android:textColorPrimaryInverseDisableOnly">@color/abc_primary_text_disable_ <item name="android:textColorHint">@color/hint_foreground_material_light</item>
 <item name="android:textColorHintInverse">@color/hint_foreground_material_dark</item>
 <item name="android:textColorHighlight">@color/highlighted_text_material_light</item>
 
 <item name="colorControlNormal">?android:attr/textColorSecondary</item>
 <item name="colorControlHighlight">@color/ripple_material_light</item>
 <item name="colorButtonNormal">@color/button_material_light</item>
 <item name="colorSwitchThumbNormal">@color/switch_thumb_material_light</item>
 
 <!-- Used by MediaRouter -->
 <item name="isLightTheme">true</item>
 </style> 背景と色を指定
  49. 49. <style name="Theme.DroidKaigi.Light" parent="Theme.AppCompat.Light.DarkActionBar">
 <item name=“actionBarTheme”>@style/ ThemeOverlay.DroidKaigi.Dark.ActionBar</item>
 </style>
 
 <style name="ThemeOverlay.DroidKaigi.Dark.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
 <item name="colorControlNormal">#FF4081</item>
 </style>
  50. 50. <android.support.design.widget.AppBarLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:theme="@style/ThemeOverlay.DroidKaigi.Dark.ActionBar">
 
 <android.support.v7.widget.Toolbar
 android:id="@+id/toolbar"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
 
 </android.support.design.widget.AppBarLayout>
  51. 51. <item name="android:windowTranslucentStatus">true</item>
  52. 52. <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="Theme.DroidKaigi.Light.NoActionBar" /> <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:windowTranslucentStatus">true</item>
 </style>
  53. 53. <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="Theme.DroidKaigi.Light.NoActionBar" /> <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:windowTranslucentStatus">true</item>
 </style>
  54. 54. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true"
 android:orientation="vertical">
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="New Button" />
 
 </LinearLayout>
  55. 55. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true"
 android:orientation="vertical">
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="New Button" />
 
 </LinearLayout>
  56. 56. <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/andr xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true">
 
 <ImageView
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:scaleType="centerCrop"
 android:src="@drawable/cover"
 tools:ignore="ContentDescription" />
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="New Button" />
 
 </FrameLayout>
  57. 57. <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/andr xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true">
 
 <ImageView
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:scaleType="centerCrop"
 android:src="@drawable/cover"
 tools:ignore="ContentDescription" />
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="New Button" />
 
 </FrameLayout>
  58. 58. <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/andr xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 
 <ImageView
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:scaleType="centerCrop"
 android:src="@drawable/cover"
 tools:ignore="ContentDescription" />
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:fitsSystemWindows="true"
 android:text="New Button" />
 
 </FrameLayout>
  59. 59. <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/andr xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 
 <ImageView
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:scaleType="centerCrop"
 android:src="@drawable/cover"
 tools:ignore="ContentDescription" />
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:fitsSystemWindows="true"
 android:text="New Button" />
 
 </FrameLayout>
  60. 60. <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/andr xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 
 <ImageView
 ... />
 
 <FrameLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true">
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="New Button" />
 
 </FrameLayout>
 
 </FrameLayout>
  61. 61. <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/andr xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 
 <ImageView
 ... />
 
 <FrameLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true">
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="New Button" />
 
 </FrameLayout>
 
 </FrameLayout>
  62. 62. <item name="android:statusBarColor">@android:color/transparent</item>
  63. 63. <item name="android:statusBarColor">@android:color/transparent</item>
  64. 64. <item name="android:statusBarColor">@android:color/transparent</item> <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:statusBarColor">@android:color/transparent</ite <item name="android:windowDrawsSystemBarBackgrounds">false</item>
 </style>
  65. 65. <item name="android:statusBarColor">@android:color/transparent</item> <style name=“Theme.Material"> ...
 <item name="windowDrawsSystemBarBackgrounds">true</item>
 ...
 </style>
  66. 66. <item name="android:statusBarColor">@android:color/transparent</item>
  67. 67. <item name="android:statusBarColor">@android:color/transparent</item> <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:statusBarColor">@android:color/transparent</it <item name="android:windowTranslucentStatus">true</item>
 </style>
  68. 68. <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:statusBarColor">@android:color/transparent</it </style> @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 
 findViewById(android.R.id.content).setSystemUiVisibility(
 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
 }
  69. 69. <item name="android:windowLightStatusBar">true</item>
  70. 70. <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:statusBarColor">@android:color/transparent</it <item name="android:windowLightStatusBar">true</item>
 </style>
  71. 71. <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:statusBarColor">@android:color/transparent</item>
 <item name="android:windowLightStatusBar">true</item>
 </style> <style name=“Theme.DroidKaigi.TranslucentStatusBar" parent="Theme.DroidKaigi.Light.NoActionBar" /> <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:windowTranslucentStatus">true</item>
 </style> <style name="Theme.DroidKaigi.TranslucentStatusBar" parent="...">
 <item name="android:statusBarColor">@android:color/transparent</item>
 </style>
  72. 72. @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 
 findViewById(android.R.id.content).setSystemUiVisibility(
 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
 }

×