ç±³å½æéã® 10 æ 17 æ¥ã«
Android 5.0 SDK ããªãªã¼ã¹ããã¾ãã。æ°ãã UI ã¦ã£ã¸ã§ããã、ãã¶ã¤ã³æ§ã«ãã ãã£ããã¸ã¥ã¢ã«è¨èªã§ãããããªã¢ã« ãã¶ã¤ã³ãå«ãã§ãã¾ã。éå»ãã¼ã¸ã§ã³ãæè¼ãã Android ããã¤ã¹ã«ãææ°ã®ãã¶ã¤ã³ãæä¾ã§ãããã、
AppCompat ã®å¤§åã¢ãããã¼ã、ããã³æ°ããªã©ã¤ãã©ãª(
RecyclerView 、
CardView 、
Palette )ã®è¿½å ãè¡ã、ã©ã¤ãã©ãªãæ¡å¼µãã¾ãã。
æ¬è¨äºã§ã¯ AppCompat ã®æ°ãããªã£ãç¹ã¨、ã¢ããªéçºã«ããã¦ãããªã¢ã« ãã¶ã¤ã³ãåãå
¥ããæ¹æ³ã«ã¤ãã¦è¦ã¦ããã¾ã。
AppCompat ã«æ°ãã«è¿½å ãããæ©è½
AppCompat(å¥å ActionBarCompat)㯠Android 4.0 ã® ActionBar API ã Gingerbread æè¼ããã¤ã¹ã«å¯¾å¿ãããããã®ããã¯ãã¼ãã¨ãã¦ã¯ãã¾ã、ããã¯ãã¼ãã¨ãã¬ã¼ã ã¯ã¼ã¯å
±éã® API ã¬ã¤ã¤ã¼ãæä¾ãã¦ãã¾ãã。AppCompat v21 㯠Android 5.0 ã«å¯¾å¿ããæ©è½ã¨ API ããå±ããã¾ã。
ãã®ãªãªã¼ã¹ã§、Android ã¯æ°ãã
Toolbar ã¦ã£ã¸ã§ãããå°å
¥ãã¾ã。ããã¯、ããæ£ç¢ºãªã³ã³ããã¼ã«ã¨æè»æ§ãå¯è½ã«ãã Action Bar ãã¿ã¼ã³ãä¸è¬åãããã®ã§ã。
Toolbar ã¯ãã¥ã¼é層å
ã«åå¨ãã¦ããã®ã§、ä»ã®ãã¥ã¼ã¨ã®å
±åã、ã¢ãã¡ã¼ã·ã§ã³、ã¹ã¯ãã¼ã«ã¤ãã³ãã¸ã®åå¿ã¨ãã£ããã¨ãç°¡åã«ã§ãã¾ã。Activity ã® Action Bar ã¨ãã¦è¨å®ãããã¨ãã§ããã®ã§、é常ã®ãªãã·ã§ã³ ã¡ãã¥ã¼ã®ã¢ã¯ã·ã§ã³ããã®å
é¨ã«è¡¨ç¤ºããããã¨ãå¯è½ã§ã。
ææ°ã® AppCompat ã¯ããæ°é±éã§ããã¤ãã® Google ã¢ããª(Play ã¹ãã¢ã Play ãã¥ã¼ã¹ã¹ã¿ã³ããªã©)ã®ã¢ãããã¼ãã«å«ã¾ãã¦ããã®ã§、ãã§ã«ã¿ãªããã使ç¨ããã¦ããã¯ãã§ã。ä¸è¨ã®ç»åã® Google I/O Android ã¢ããª(
ãªã¼ãã³ã½ã¼ã¹ )ããã§ã«ææ°ã® AppCompat ã«å¯¾å¿ãã¦ãã¾ã。
ã»ããã¢ãã
Gradle ã使ç¨ãã¦ããå ´åã¯、build.gradle ãã¡ã¤ã«ã« appcompat ãä¾åé¢ä¿(dependencies)ã¨ãã¦è¿½å ãã¾ã。
dependencies {
compile "com.android.support:appcompat-v7:21.0.+"
}
æ°è¦ã«ã¯ãããå ´å
ç¾å¨ AppCompat ã使ç¨ãã¦ããªãã、ããããæ°è¦ã«ã¯ãããå ´åã®è¨å®æ¹æ³ã§ã。
ãã¹ã¦ã® Activity 㯠ActionBarActivity ããæ¡å¼µããã¦ããå¿
è¦ãããã¾ã。ActinBarActivity 㯠v4 ãµãã¼ãã©ã¤ãã©ãªã® FragmentActivity ããæ¡å¼µããã¦ããã®ã§、å¼ãç¶ã fragment ã使ç¨ãããã¨ãã§ãã¾ã。
Action Bar/Toolbar ã使ç¨ãããã¼ãã¯å¿
ã Theme.AppCompat ãç¶æ¿ããå¿
è¦ãããã¾ã。Light ã NoActionBar ãªã©ã®ããªã¨ã¼ã·ã§ã³ãããã¾ã。
Action Bar ã«è¡¨ç¤ºãããå
容(Toolbar å
ã®ãªã¹ãããã²ã¼ã·ã§ã³ã®ããã® SpinnerAdapter ãªã©)ã inflate ããã¨ãã«ã¯、å¿
ã getSupportActionBar().getThemedContext() çµç±ã§åå¾ãã Action bar ã®ãã¼ãã®å
容ã使ç¨ãã¦ãã ãã。
MenuItem ã«å¯¾ã㦠Action ã«é¢é£ããã³ã¼ã«ãè¡ãå ´åã¯、å¿
ã MenuItemCompat å
ã® static ã¡ã½ããã使ç¨ãã¦ãã ãã。
ãã詳細ãªæ
å ±ã¯、AppCompat ã®ç·åçãªã¬ã¤ã
Action Bar API guide ãåç
§ãã¦ãã ãã。
æ¢åã®ã»ããã¢ããããã®ç§»è¡
ã»ã¨ãã©ã®ã¢ããªã§ã¯、
values/ ã«ãã¼ãã 1 ã¤å®£è¨ããã ãã§å¤§ä¸å¤«ã§ã。
values/themes.xml:
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
<!-- AppCompat ã® actionBarStyle ãè¨å® -->
<item name="actionBarStyle">@style/MyActionBarStyle</item>
<!-- AppCompat ã® color theming attrs ãè¨å® -->
<item name=”colorPrimary”>@color/myawesome red</item>
<item name=”colorPrimaryDark”>@color/myawesome darker_red</item>
<!-- ä»ã®å±æ§ -->
</style>
ããã§
values-v14 以ä¸ã® Action Bar ã®ã¹ã¿ã¤ã«ã¯ãã¹ã¦åé¤ãã¦ã大ä¸å¤«ã§ã。
ãã¼ã
AppCompat ã¯æ°ãã
Color Palette ã®ãã¼ã ã®å±æ§ããµãã¼ããã¦ãã、ããªãã®ãã©ã³ãã«åã£ã
主è¦è²ã¨å¼·èª¿è² ã®ãã¼ãã容æã«ã«ã¹ã¿ãã¤ãºã§ãã¾ã。
values/themes.xml:
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
<!-- colorPrimary is used for the default action bar background -->
<item name=”colorPrimary”>@color/my_awesome_color</item>
<!-- status bar ã«ã¯ colorPrimaryDark ã使ç¨ããã¾ã -->
<item name=”colorPrimaryDark”>@color/my_awesome_darker_color</item>
<!-- ã¦ã£ã¸ã§ããã«è²åããä»ãã colorControlActivated ã®ããã©ã«ãå¤ã¨ã㦠colorAccent ã使ç¨ããã¾ã -->
<item name=”colorAccent”>@color/accent</item>
<!-- ä»ã«ã colorControlNormal、colorControlActivated、
colorControlHighlight 㨠colorSwitchThumbNormalãè¨å®ã§ãã¾ã -->
</style>
ãããã®å±æ§ãè¨å®ããã¨、AppCompat ã¯èªåçã« API 21以ä¸ã®ãã¬ã¼ã ã¯ã¼ã¯å±æ§ã®å¤ã«å½±é¿ã、ã¹ãã¼ã¿ã¹ãã¼ã Overview (å±¥æ´)ã®ã¨ã³ããªã¼ã®è²ãèªåã§è¨å®ããã¾ã。
æ§æ¥ã®ãã©ãããã©ã¼ã ã§ã¯、 AppCompat ã¯å¯è½ãªç®æã§ã¯ã«ã©ã¼ãã¼ããã¨ãã¥ã¬ã¼ããã¾ã。ç¾æç¹ã§ã¯ Action Bar ã¨ããã¤ãã®ã¦ã£ã¸ã§ããã«è²ãä»ãããã¨ã«éå®ããã¦ãã¾ã。
ã¦ã£ã¸ã§ããã®è²ä»ã
Android 5.0 ãæè¼ããããã¤ã¹ã§ã¯、ãã¹ã¦ã®ã¦ã£ã¸ã§ããã¯ä¸è¿°ã®ã«ã©ã¼ãã¼ãå±æ§ã使ç¨ãã¦è²ä»ãããã¦ãã¾ã。Lollipop ã§ãããå¯è½ã«ãã¦ããã®ã¯2ã¤ã®æ©è½ã§ã。drawable tinting 㨠drawable ã«ããããªãã¡ã¬ã³ã¹ãã¼ãå±æ§(?attr/fooã®å½¢å¼)ã§ã。
5.0 ããåã®ãã¼ã¸ã§ã³ã® Android ã§ã¯、AppCompat 㯠UI ã¦ã£ã¸ã§ããã®ãµãã»ããã«å¯¾ãã¦é¡ä¼¼ã®æ©è½ãæä¾ãã¾ã。
AppCompat ã® Toolbar ã§æä¾ãããã¹ã¦(ã¢ã¯ã·ã§ã³ã¢ã¼ããªã©)
EditText
Spinner
CheckBox
RadioButton
Switch (æ°ãã android.support.v7.widget.SwitchCompat ã使ç¨ãã¦ãã ãã)
CheckedTextView
ããããæ©è½ããããã«ç¹å¥ä½ããè¨å®ããå¿
è¦ã¯ããã¾ãã。é常éãã¬ã¤ã¢ã¦ãå
ã§ãããã®ã³ã³ããã¼ã«ã使ç¨ããã°、ãã¨ã¯AppCompat ãå¦çãã¦ããã¾ã(ããã¤ãã®æ³¨æäºé
ãããã¾ãã®ã§、æä¸é¨ã® FAQ ãåç
§ãã¦ãã ãã)。
Toolbar ã¦ã£ã¸ã§ãã
Toolbar 㯠AppCompat ã§å®å
¨ã«ãµãã¼ããã、ãã¬ã¼ã ã¯ã¼ã¯ ã¦ã£ã¸ã§ããã¨åçã®æ©è½ã¨ API ããã¡ã¾ã。AppCompat ã§ã¯、Toolbar ã¯
android.support.v7.widget.Toolbar ã¯ã©ã¹ã«çµã¿è¾¼ã¾ãã¦ãã¾ã。Toolbar ã使ç¨ããã«ã¯2ã¤ã®æ¹æ³ãããã¾ã。
Toolbar ã Action Bar ã®ããã«ä½¿ç¨ãã。ããã¯ã¡ãã¥ã¼ inflate ãé¸æ、ActionBarDrawerToggle ã®ãããª、æ¢åã® Action Bar æ©è½ã使ç¨ããããã©å¤è¦ãããç´°ããã³ã³ããã¼ã«ããã、ã¨ãã£ãã¨ãã«æå¹ã§ã。
ã¹ã¿ã³ãã¢ãã¼ã³ Toolbar ã使ç¨ãã。ããã¯1度ã«è¤æ°ã® toolbar ã表示ããã、ç»é¢ã®å
¨å¹
ã«æºããªã toolbar ã表示ãããã¨ãã£ã、 Action Bar ã§ã¯å¯¾å¿ã§ããªããããªãã¿ã¼ã³ã使ç¨ãããã¨ãã«æå¹ã§ã。
Action Bar
Toolbar ã Action Bar ã®ããã«ä½¿ç¨ããã«ã¯、ã¾ããããããå¤è¦³ãæä¾ããã¦ãã Action Bar ãç¡å¹ã«ãã¾ã。
Theme.AppCompat.NoActionBar (ãããã¯ããã®ããªã¨ã¼ã·ã§ã³)ãããã¼ããæ¡å¼µããã®ãæãç°¡åãªæ¹æ³ã§ã。
次ã«、
Toolbar ã¤ã³ã¹ã¿ã³ã¹ãä½æãã¾ã。(é常、ã¬ã¤ã¢ã¦ããæå®ãã XML ã使ç¨ãã¾ã)
<android.support.v7.widget.Toolbar
android:id=”@+id/my_awesome_toolbar”
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:minHeight=”?attr/actionBarSize”
android:background=”?attr/colorPrimary” />
ä¾ã¨ãã¦ã¯、é«ã、å¹
、èæ¯ãªã©ãæãã¾ã¾ã«è¨å®ã§ãã¾ã。
Toolbar ã¯
ViewGroup ãªã®ã§、ã¹ã¿ã¤ã«ãé
ç½®ãèªç±ã«è¡ãã¾ã。
ããã¦
Activity ã
Fragment ã«ã¦、
Toolbar ã Action Bar ã¨ãã¦æ©è½ããããã«è¨å®ãã¾ã。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
Toolbar toolbar = (Toolbar) findViewById(R.id.myawesome toolbar);
setSupportActionBar(toolbar);
}
ããã§、é常ã®ãªãã·ã§ã³ ã¡ãã¥ã¼ ã³ã¼ã«ããã¯ãçµç±ãã¦、ãã¹ã¦ã®ã¡ãã¥ã¼ ã¢ã¤ãã ã¯
Toolbar ã«è¡¨ç¤ºããã¾ã。
ã¹ã¿ã³ãã¢ãã¼ã³
ã¹ã¿ã³ãã¢ãã¼ã³ ã¢ã¼ãã®éãã¯、
Toolbar ã Action Bar ã¨ãã¦æ©è½ãããªãç¹ã§ã。ããã«ãã、ãã¹ã¦ã® AppCompat ãã¼ããé©ç¨ãããã¨ãã§ã、äºãå¤è¦³ãæä¾ããã¦ãã Action Bar ãç¡å¹ã«ããå¿
è¦ãããã¾ãã。
ã¹ã¿ã³ãã¢ãã¼ã³ ã¢ã¼ãã§ã¯、Toolbar ã®ã³ã³ãã³ããã¢ã¯ã·ã§ã³ãæåã§å
¥åããªãã¦ã¯ããã¾ãã。ãã¨ãã°ã¢ã¯ã·ã§ã³ã表示ããããã®ã§ããã°、ã¡ãã¥ã¼ã inflate ããå¿
è¦ãããã¾ã。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
Toolbar toolbar = (Toolbar) findViewById(R.id.myawesome toolbar);
// ã¡ãã¥ã¼ã¢ã¤ãã ã®ã¯ãªãã¯ã«å¯¾å¿ããããã«、OnMenuItemClickListener ãè¨å®
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// ã¡ãã¥ã¼ã¢ã¤ãã ã«å¯¾å¿
return true;
}
});
// toolbar ã«è¡¨ç¤ºãããããã«ã¡ãã¥ã¼ã inflate
toolbar.inflateMenu(R.menu.yourtoolbar menu);
}
Toolbar ã§ã§ãããã¨ã¯ä»ã«ãããããããã¾ã。詳細ã«ã¤ãã¦ã¯
Toolbar API reference ãåç
§ãã¦ãã ãã。
ã¹ã¿ã¤ã«
Toolbar ã®ã¹ã¿ã¤ã«ã¯é常㮠Action Bar ã¨ã¯ç°ãªã£ã¦ãã、ãã¥ã¼ãç´æ¥è¨å®ãã¾ã。
ä¸è¨ã¯ Toolbar ã Action Bar ã¨ãã¦ä½¿ç¨ãã¦ããã¨ãã«æ¡ç¨ãã¹ãåºæ¬çãªã¹ã¿ã¤ã«ã§ã。
<android.support.v7.widget.Toolbar
android:layoutheight="wrap content"
android:layoutwidth="match parent"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
app:theme
宣è¨ã«ãã£ã¦、ããã¹ãã¨ã¢ã¤ãã ãåè²å¡ãã¤ã¶ãã¨ãªãã¾ã。(100% ä¸éæãªç½è²ãªã©)
DarkActionBar
ã¬ã¤ã¢ã¦ãå±æ§ã使ç¨ãããã¨ã§、
Toolbar ã®ã¤ã³ã¹ã¿ã³ã¹ã®ã¹ã¿ã¤ã«ãç´æ¥è¨å®ã§ãã¾ã。「DarkActionBar」(ã³ã³ãã³ãã¯æã、ãªã¼ãã¼ããã¼ ã¡ãã¥ã¼ã¯æãã) ã®ããã«è¦ãã
Toolbar ãä½æããã«ã¯、é©åãªãã¼ãå±æ§ã¨
popupTheme å±æ§ãè¨å®ãã¾ã。
<android.support.v7.widget.Toolbar
android:layoutheight=”wrap content”
android:layoutwidth=”match parent”
android:minHeight=”@dimen/tripleheight toolbar”
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
SearchView ã¦ã£ã¸ã§ãã
AppCompat 㯠Lollipop ã§å·æ°ããã
SearchView API ãæä¾ãã¾ãã®ã§、ä»ã¾ã§ãããã«ã¹ã¿ãã¤ãºæ§ã¨ã¹ã¿ã¤ã«è¨å®ã«åªãã¦ãã¾ã。ããããã¯æ§æ¥ã®
searchView* ãã¼ãå±æ§ã®ä»£ããã«、Lollipop å¼ã®æ§é ã使ç¨ãã¾ã。
SearchView ã®ã¹ã¿ã¤ã«è¨å®æ¹æ³ã¯ä»¥ä¸ã®éãã§ã。
values/themes.xml:
<style name=”Theme.MyTheme” parent=”Theme.AppCompat”>
<item name=”searchViewStyle”>@style/MySearchViewStyle</item>
</style>
<style name=”MySearchViewStyle” parent=”Widget.AppCompat.SearchView”>
<!-- æ¤ç´¢ã¯ã¨ãªé¨å(EditText ãªã©)ã®èæ¯ -->
<item name="queryBackground">...</item>
<!-- ã¢ã¯ã·ã§ã³é¨å(voice、submit ãªã©)ã®èæ¯ -->
<item name="submitBackground">...</item>
<!-- Close ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="closeIcon">...</item>
<!-- Search ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="searchIcon">...</item>
<!-- Go/commit ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="goIcon">...</item>
<!-- Voice search ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="voiceIcon">...</item>
<!-- ã¯ã¨ãª ãµã¸ã§ã¹ãã§ã³è¡ã«è¡¨ç¤ºããã Commit ã¢ã¤ã³ã³ -->
<item name="commitIcon">...</item>
<!-- ã¯ã¨ãª ãµã¸ã§ã¹ãã§ã³è¡ã® ã¬ã¤ã¢ã¦ã -->
<item name="suggestionRowLayout">...</item>
</style>
ã»ã¨ãã©ã®ã¢ããªã«ããã¦ã¯ããã©ã«ãã®ã¾ã¾ã§ãæ£å¸¸ã«æ©è½ãã¾ãã®ã§、ãããããã¹ã¦(ããã㯠1 ã¤ã)è¨å®ããå¿
è¦ã¯ããã¾ãã。
Toolbar ãä»ããã«…
ãã®è¨äºã AppCompat ã®ä½¿ãã¯ããã¨、ç´ æ´ããããããªã¢ã« ã¢ããªã®è£½ä½ã®ä¸å©ã¨ãªããã°å¹¸ãã§ã。AppCompat ãã¯ããã¨ãããµãã¼ã ã©ã¤ãã©ãªã«ã¤ãã¦ã®è³ªåã、ããã¥ã¡ã³ããå¢ããã¹ãåéãããã¾ããã、ã³ã¡ã³ãæ¬ã Google+、Twitter ãªã©ã§ãç¥ãããã ãã。
FAQ
Lollipop å°å
¥åã®ããã¤ã¹ã§ EditText(ãããã¯åè¿°ã®ã¦ã£ã¸ã§ããã®1ã¤)ãæ£ããè²ä»ãããã¦ããªãã®ã¯ãªãã§ãã?
AppCompat ã®ã¦ã£ã¸ã§ããè²ä»ãã¯、ã¬ã¤ã¢ã¦ã inflation ãæç¥ãã¦、è²ä»ãã«å¯¾å¿ããç¹å¥ãªã¦ã£ã¸ã§ããã代ããã«å·®ãè¾¼ãä»çµã¿ã«ãªã£ã¦ãã¾ã。ã»ã¨ãã©ã®å ´åã¯ããã§æ£ããæ©è½ãã¾ãã、ä¸è¨ã®ãããªä¾å¤ã±ã¼ã¹ãèãããã¾ã。
å½è©²ã¦ã£ã¸ã§ãããã«ã¹ã¿ãã¤ãºããã¦ãã(ã¤ã¾ã EditText ãæ¡å¼µãã¦ãã)
LayoutInflater ãªã㧠EditText ãä½æãã¦ãã(ã¤ã¾ãæ°è¦ã® EditText() ãã³ã¼ã«ãã¦ãã)
è²ä»ãã«å¯¾å¿ããç¹å¥ãªã¦ã£ã¸ã§ããã¯æªå®æã®ãã、ç¾å¨é ããã¦ãã¾ã。ä»å¾å¤ããå¯è½æ§ãããã¾ã。
Lollipop å°å
¥åã®ããã¤ã¹ã§ã¯ç¹å®ã®ã¦ã£ã¸ã§ããã«ãããªã¢ã« ã¹ã¿ã¤ã«åããã¦ããªãã®ã¯ãªãã§ãã?
ç¾æç¹ã¾ã§ã§ã¢ãããã¼ããããã®ã¯、æãåºã使ããã¦ããã¦ã£ã¸ã§ããã ãã ããã§ã。ä»å¾ã® AppCompat ãªãªã¼ã¹ã¨ã¨ãã«å¢ãã¦ããã¾ã。
android:windowContentOverlay 㯠null ã«è¨å®ãã¦ããã®ã«、Android Lollipop ã§ç§ã® Action Bar ã«ã·ã£ãã¦ãããã®ã¯ãªãã§ãã?
Lollipopã§ã¯、æ°ãã Elevation API ã使ã£ã¦ Action Bar ã«ã·ã£ãã¦ãä»ä¸ãã¦ãã¾ã。åãé¤ãã«ã¯、
getSupportActionBar().setElevation(0) ãã³ã¼ã«ããã、Action Bar ã¹ã¿ã¤ã«ã§ Elevation å±æ§ãè¨å®ãã¾ã。
Lollipop å°å
¥åã®ããã¤ã¹ã§ã¯ãªããã«å¹æããªãã®ã¯ãªãã§ãã?
RippleDrawable ã®åä½ã¯ Android 5.0 ã®æ°ãã RenderThread ã«å¤§ããä¾åãã¾ã。ç¾ç¶ 5.0 ããåã®ãã¼ã¸ã§ã³ã® Android ã§ã¯、ããã©ã¼ãã³ã¹æé©åã®ãã RippleDrawable ã¯å«ã¾ãã¦ãã¾ãã。
Preferences 㧠AppCompat ã使ç¨ããã«ã¯ã©ããããããã§ãã?
API v11 以ä¸ã®ããã¤ã¹ã§ã¯、å¼ãç¶ã ActionBarActivity ã§
PreferenceFragment ã使ç¨ã§ãã¾ã。ããããå¤ãããã¤ã¹ã§ã¯ãããªã¢ã« ã¹ã¿ã¤ã«åããã¦ããªã、é常㮠PreferenceActivity ãæä¾ããå¿
è¦ãããã¾ã。
Posted by
èæ¨ä½ä¸ Developer Relations Team
ç±³å½æéã® 10 æ 17 æ¥ã« Android 5.0 SDK ããªãªã¼ã¹ããã¾ãã。æ°ãã UI ã¦ã£ã¸ã§ããã、ãã¶ã¤ã³æ§ã«ãã ãã£ããã¸ã¥ã¢ã«è¨èªã§ãããããªã¢ã« ãã¶ã¤ã³ãå«ãã§ãã¾ã。éå»ãã¼ã¸ã§ã³ãæè¼ãã Android ããã¤ã¹ã«ãææ°ã®ãã¶ã¤ã³ãæä¾ã§ãããã、AppCompat ã®å¤§åã¢ãããã¼ã、ããã³æ°ããªã©ã¤ãã©ãª(RecyclerView 、CardView 、Palette )ã®è¿½å ãè¡ã、ã©ã¤ãã©ãªãæ¡å¼µãã¾ãã。
æ¬è¨äºã§ã¯ AppCompat ã®æ°ãããªã£ãç¹ã¨、ã¢ããªéçºã«ããã¦ãããªã¢ã« ãã¶ã¤ã³ãåãå
¥ããæ¹æ³ã«ã¤ãã¦è¦ã¦ããã¾ã。
AppCompat ã«æ°ãã«è¿½å ãããæ©è½
AppCompat(å¥å ActionBarCompat)㯠Android 4.0 ã® ActionBar API ã Gingerbread æè¼ããã¤ã¹ã«å¯¾å¿ãããããã®ããã¯ãã¼ãã¨ãã¦ã¯ãã¾ã、ããã¯ãã¼ãã¨ãã¬ã¼ã ã¯ã¼ã¯å
±éã® API ã¬ã¤ã¤ã¼ãæä¾ãã¦ãã¾ãã。AppCompat v21 㯠Android 5.0 ã«å¯¾å¿ããæ©è½ã¨ API ããå±ããã¾ã。
ãã®ãªãªã¼ã¹ã§、Android ã¯æ°ãã Toolbar ã¦ã£ã¸ã§ãããå°å
¥ãã¾ã。ããã¯、ããæ£ç¢ºãªã³ã³ããã¼ã«ã¨æè»æ§ãå¯è½ã«ãã Action Bar ãã¿ã¼ã³ãä¸è¬åãããã®ã§ã。Toolbar ã¯ãã¥ã¼é層å
ã«åå¨ãã¦ããã®ã§、ä»ã®ãã¥ã¼ã¨ã®å
±åã、ã¢ãã¡ã¼ã·ã§ã³、ã¹ã¯ãã¼ã«ã¤ãã³ãã¸ã®åå¿ã¨ãã£ããã¨ãç°¡åã«ã§ãã¾ã。Activity ã® Action Bar ã¨ãã¦è¨å®ãããã¨ãã§ããã®ã§、é常ã®ãªãã·ã§ã³ ã¡ãã¥ã¼ã®ã¢ã¯ã·ã§ã³ããã®å
é¨ã«è¡¨ç¤ºããããã¨ãå¯è½ã§ã。
ææ°ã® AppCompat ã¯ããæ°é±éã§ããã¤ãã® Google ã¢ããª(Play ã¹ãã¢ã Play ãã¥ã¼ã¹ã¹ã¿ã³ããªã©)ã®ã¢ãããã¼ãã«å«ã¾ãã¦ããã®ã§、ãã§ã«ã¿ãªããã使ç¨ããã¦ããã¯ãã§ã。ä¸è¨ã®ç»åã® Google I/O Android ã¢ããª(ãªã¼ãã³ã½ã¼ã¹ )ããã§ã«ææ°ã® AppCompat ã«å¯¾å¿ãã¦ãã¾ã。
ã»ããã¢ãã
Gradle ã使ç¨ãã¦ããå ´åã¯、build.gradle ãã¡ã¤ã«ã« appcompat ãä¾åé¢ä¿(dependencies)ã¨ãã¦è¿½å ãã¾ã。
dependencies {
compile "com.android.support:appcompat-v7:21.0.+"
}
æ°è¦ã«ã¯ãããå ´å
ç¾å¨ AppCompat ã使ç¨ãã¦ããªãã、ããããæ°è¦ã«ã¯ãããå ´åã®è¨å®æ¹æ³ã§ã。
ãã¹ã¦ã® Activity 㯠ActionBarActivity ããæ¡å¼µããã¦ããå¿
è¦ãããã¾ã。ActinBarActivity 㯠v4 ãµãã¼ãã©ã¤ãã©ãªã® FragmentActivity ããæ¡å¼µããã¦ããã®ã§、å¼ãç¶ã fragment ã使ç¨ãããã¨ãã§ãã¾ã。
Action Bar/Toolbar ã使ç¨ãããã¼ãã¯å¿
ã Theme.AppCompat ãç¶æ¿ããå¿
è¦ãããã¾ã。Light ã NoActionBar ãªã©ã®ããªã¨ã¼ã·ã§ã³ãããã¾ã。
Action Bar ã«è¡¨ç¤ºãããå
容(Toolbar å
ã®ãªã¹ãããã²ã¼ã·ã§ã³ã®ããã® SpinnerAdapter ãªã©)ã inflate ããã¨ãã«ã¯、å¿
ã getSupportActionBar().getThemedContext() çµç±ã§åå¾ãã Action bar ã®ãã¼ãã®å
容ã使ç¨ãã¦ãã ãã。
MenuItem ã«å¯¾ã㦠Action ã«é¢é£ããã³ã¼ã«ãè¡ãå ´åã¯、å¿
ã MenuItemCompat å
ã® static ã¡ã½ããã使ç¨ãã¦ãã ãã。
ãã詳細ãªæ
å ±ã¯、AppCompat ã®ç·åçãªã¬ã¤ã Action Bar API guide ãåç
§ãã¦ãã ãã。
æ¢åã®ã»ããã¢ããããã®ç§»è¡
ã»ã¨ãã©ã®ã¢ããªã§ã¯、values/ ã«ãã¼ãã 1 ã¤å®£è¨ããã ãã§å¤§ä¸å¤«ã§ã。
values/themes.xml:
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
<!-- AppCompat ã® actionBarStyle ãè¨å® -->
<item name="actionBarStyle">@style/MyActionBarStyle</item>
<!-- AppCompat ã® color theming attrs ãè¨å® -->
<item name=”colorPrimary”>@color/myawesome red</item>
<item name=”colorPrimaryDark”>@color/myawesome darker_red</item>
<!-- ä»ã®å±æ§ -->
</style>
ãã㧠values-v14 以ä¸ã® Action Bar ã®ã¹ã¿ã¤ã«ã¯ãã¹ã¦åé¤ãã¦ã大ä¸å¤«ã§ã。
ãã¼ã
AppCompat ã¯æ°ãã Color Palette ã®ãã¼ã ã®å±æ§ããµãã¼ããã¦ãã、ããªãã®ãã©ã³ãã«åã£ã主è¦è²ã¨å¼·èª¿è² ã®ãã¼ãã容æã«ã«ã¹ã¿ãã¤ãºã§ãã¾ã。
values/themes.xml:
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
<!-- colorPrimary is used for the default action bar background -->
<item name=”colorPrimary”>@color/my_awesome_color</item>
<!-- status bar ã«ã¯ colorPrimaryDark ã使ç¨ããã¾ã -->
<item name=”colorPrimaryDark”>@color/my_awesome_darker_color</item>
<!-- ã¦ã£ã¸ã§ããã«è²åããä»ãã colorControlActivated ã®ããã©ã«ãå¤ã¨ã㦠colorAccent ã使ç¨ããã¾ã -->
<item name=”colorAccent”>@color/accent</item>
<!-- ä»ã«ã colorControlNormal、colorControlActivated、
colorControlHighlight 㨠colorSwitchThumbNormalãè¨å®ã§ãã¾ã -->
</style>
ãããã®å±æ§ãè¨å®ããã¨、AppCompat ã¯èªåçã« API 21以ä¸ã®ãã¬ã¼ã ã¯ã¼ã¯å±æ§ã®å¤ã«å½±é¿ã、ã¹ãã¼ã¿ã¹ãã¼ã Overview (å±¥æ´)ã®ã¨ã³ããªã¼ã®è²ãèªåã§è¨å®ããã¾ã。
æ§æ¥ã®ãã©ãããã©ã¼ã ã§ã¯、 AppCompat ã¯å¯è½ãªç®æã§ã¯ã«ã©ã¼ãã¼ããã¨ãã¥ã¬ã¼ããã¾ã。ç¾æç¹ã§ã¯ Action Bar ã¨ããã¤ãã®ã¦ã£ã¸ã§ããã«è²ãä»ãããã¨ã«éå®ããã¦ãã¾ã。
ã¦ã£ã¸ã§ããã®è²ä»ã
Android 5.0 ãæè¼ããããã¤ã¹ã§ã¯、ãã¹ã¦ã®ã¦ã£ã¸ã§ããã¯ä¸è¿°ã®ã«ã©ã¼ãã¼ãå±æ§ã使ç¨ãã¦è²ä»ãããã¦ãã¾ã。Lollipop ã§ãããå¯è½ã«ãã¦ããã®ã¯2ã¤ã®æ©è½ã§ã。drawable tinting 㨠drawable ã«ããããªãã¡ã¬ã³ã¹ãã¼ãå±æ§(?attr/fooã®å½¢å¼)ã§ã。
5.0 ããåã®ãã¼ã¸ã§ã³ã® Android ã§ã¯、AppCompat 㯠UI ã¦ã£ã¸ã§ããã®ãµãã»ããã«å¯¾ãã¦é¡ä¼¼ã®æ©è½ãæä¾ãã¾ã。
AppCompat ã® Toolbar ã§æä¾ãããã¹ã¦(ã¢ã¯ã·ã§ã³ã¢ã¼ããªã©)
EditText
Spinner
CheckBox
RadioButton
Switch (æ°ãã android.support.v7.widget.SwitchCompat ã使ç¨ãã¦ãã ãã)
CheckedTextView
ããããæ©è½ããããã«ç¹å¥ä½ããè¨å®ããå¿
è¦ã¯ããã¾ãã。é常éãã¬ã¤ã¢ã¦ãå
ã§ãããã®ã³ã³ããã¼ã«ã使ç¨ããã°、ãã¨ã¯AppCompat ãå¦çãã¦ããã¾ã(ããã¤ãã®æ³¨æäºé
ãããã¾ãã®ã§、æä¸é¨ã® FAQ ãåç
§ãã¦ãã ãã)。
Toolbar ã¦ã£ã¸ã§ãã
Toolbar 㯠AppCompat ã§å®å
¨ã«ãµãã¼ããã、ãã¬ã¼ã ã¯ã¼ã¯ ã¦ã£ã¸ã§ããã¨åçã®æ©è½ã¨ API ããã¡ã¾ã。AppCompat ã§ã¯、Toolbar 㯠android.support.v7.widget.Toolbar ã¯ã©ã¹ã«çµã¿è¾¼ã¾ãã¦ãã¾ã。Toolbar ã使ç¨ããã«ã¯2ã¤ã®æ¹æ³ãããã¾ã。
Toolbar ã Action Bar ã®ããã«ä½¿ç¨ãã。ããã¯ã¡ãã¥ã¼ inflate ãé¸æ、ActionBarDrawerToggle ã®ãããª、æ¢åã® Action Bar æ©è½ã使ç¨ããããã©å¤è¦ãããç´°ããã³ã³ããã¼ã«ããã、ã¨ãã£ãã¨ãã«æå¹ã§ã。
ã¹ã¿ã³ãã¢ãã¼ã³ Toolbar ã使ç¨ãã。ããã¯1度ã«è¤æ°ã® toolbar ã表示ããã、ç»é¢ã®å
¨å¹
ã«æºããªã toolbar ã表示ãããã¨ãã£ã、 Action Bar ã§ã¯å¯¾å¿ã§ããªããããªãã¿ã¼ã³ã使ç¨ãããã¨ãã«æå¹ã§ã。
Action Bar
Toolbar ã Action Bar ã®ããã«ä½¿ç¨ããã«ã¯、ã¾ããããããå¤è¦³ãæä¾ããã¦ãã Action Bar ãç¡å¹ã«ãã¾ã。Theme.AppCompat.NoActionBar (ãããã¯ããã®ããªã¨ã¼ã·ã§ã³)ãããã¼ããæ¡å¼µããã®ãæãç°¡åãªæ¹æ³ã§ã。
次ã«、Toolbar ã¤ã³ã¹ã¿ã³ã¹ãä½æãã¾ã。(é常、ã¬ã¤ã¢ã¦ããæå®ãã XML ã使ç¨ãã¾ã)
<android.support.v7.widget.Toolbar
android:id=”@+id/my_awesome_toolbar”
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:minHeight=”?attr/actionBarSize”
android:background=”?attr/colorPrimary” />
ä¾ã¨ãã¦ã¯、é«ã、å¹
、èæ¯ãªã©ãæãã¾ã¾ã«è¨å®ã§ãã¾ã。Toolbar 㯠ViewGroup ãªã®ã§、ã¹ã¿ã¤ã«ãé
ç½®ãèªç±ã«è¡ãã¾ã。
ãã㦠Activity ã Fragment ã«ã¦、Toolbar ã Action Bar ã¨ãã¦æ©è½ããããã«è¨å®ãã¾ã。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
Toolbar toolbar = (Toolbar) findViewById(R.id.myawesome toolbar);
setSupportActionBar(toolbar);
}
ããã§、é常ã®ãªãã·ã§ã³ ã¡ãã¥ã¼ ã³ã¼ã«ããã¯ãçµç±ãã¦、ãã¹ã¦ã®ã¡ãã¥ã¼ ã¢ã¤ãã 㯠Toolbar ã«è¡¨ç¤ºããã¾ã。
ã¹ã¿ã³ãã¢ãã¼ã³
ã¹ã¿ã³ãã¢ãã¼ã³ ã¢ã¼ãã®éãã¯、Toolbar ã Action Bar ã¨ãã¦æ©è½ãããªãç¹ã§ã。ããã«ãã、ãã¹ã¦ã® AppCompat ãã¼ããé©ç¨ãããã¨ãã§ã、äºãå¤è¦³ãæä¾ããã¦ãã Action Bar ãç¡å¹ã«ããå¿
è¦ãããã¾ãã。
ã¹ã¿ã³ãã¢ãã¼ã³ ã¢ã¼ãã§ã¯、Toolbar ã®ã³ã³ãã³ããã¢ã¯ã·ã§ã³ãæåã§å
¥åããªãã¦ã¯ããã¾ãã。ãã¨ãã°ã¢ã¯ã·ã§ã³ã表示ããããã®ã§ããã°、ã¡ãã¥ã¼ã inflate ããå¿
è¦ãããã¾ã。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
Toolbar toolbar = (Toolbar) findViewById(R.id.myawesome toolbar);
// ã¡ãã¥ã¼ã¢ã¤ãã ã®ã¯ãªãã¯ã«å¯¾å¿ããããã«、OnMenuItemClickListener ãè¨å®
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// ã¡ãã¥ã¼ã¢ã¤ãã ã«å¯¾å¿
return true;
}
});
// toolbar ã«è¡¨ç¤ºãããããã«ã¡ãã¥ã¼ã inflate
toolbar.inflateMenu(R.menu.yourtoolbar menu);
}
Toolbar ã§ã§ãããã¨ã¯ä»ã«ãããããããã¾ã。詳細ã«ã¤ãã¦ã¯ Toolbar API reference ãåç
§ãã¦ãã ãã。
ã¹ã¿ã¤ã«
Toolbar ã®ã¹ã¿ã¤ã«ã¯é常㮠Action Bar ã¨ã¯ç°ãªã£ã¦ãã、ãã¥ã¼ãç´æ¥è¨å®ãã¾ã。
ä¸è¨ã¯ Toolbar ã Action Bar ã¨ãã¦ä½¿ç¨ãã¦ããã¨ãã«æ¡ç¨ãã¹ãåºæ¬çãªã¹ã¿ã¤ã«ã§ã。
<android.support.v7.widget.Toolbar
android:layoutheight="wrap content"
android:layoutwidth="match parent"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
app:theme
宣è¨ã«ãã£ã¦、ããã¹ãã¨ã¢ã¤ãã ãåè²å¡ãã¤ã¶ãã¨ãªãã¾ã。(100% ä¸éæãªç½è²ãªã©)
DarkActionBar
ã¬ã¤ã¢ã¦ãå±æ§ã使ç¨ãããã¨ã§、Toolbar ã®ã¤ã³ã¹ã¿ã³ã¹ã®ã¹ã¿ã¤ã«ãç´æ¥è¨å®ã§ãã¾ã。「DarkActionBar」(ã³ã³ãã³ãã¯æã、ãªã¼ãã¼ããã¼ ã¡ãã¥ã¼ã¯æãã) ã®ããã«è¦ãã Toolbar ãä½æããã«ã¯、é©åãªãã¼ãå±æ§ã¨ popupTheme å±æ§ãè¨å®ãã¾ã。
<android.support.v7.widget.Toolbar
android:layoutheight=”wrap content”
android:layoutwidth=”match parent”
android:minHeight=”@dimen/tripleheight toolbar”
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
SearchView ã¦ã£ã¸ã§ãã
AppCompat 㯠Lollipop ã§å·æ°ããã SearchView API ãæä¾ãã¾ãã®ã§、ä»ã¾ã§ãããã«ã¹ã¿ãã¤ãºæ§ã¨ã¹ã¿ã¤ã«è¨å®ã«åªãã¦ãã¾ã。ããããã¯æ§æ¥ã® searchView* ãã¼ãå±æ§ã®ä»£ããã«、Lollipop å¼ã®æ§é ã使ç¨ãã¾ã。
SearchView ã®ã¹ã¿ã¤ã«è¨å®æ¹æ³ã¯ä»¥ä¸ã®éãã§ã。
values/themes.xml:
<style name=”Theme.MyTheme” parent=”Theme.AppCompat”>
<item name=”searchViewStyle”>@style/MySearchViewStyle</item>
</style>
<style name=”MySearchViewStyle” parent=”Widget.AppCompat.SearchView”>
<!-- æ¤ç´¢ã¯ã¨ãªé¨å(EditText ãªã©)ã®èæ¯ -->
<item name="queryBackground">...</item>
<!-- ã¢ã¯ã·ã§ã³é¨å(voice、submit ãªã©)ã®èæ¯ -->
<item name="submitBackground">...</item>
<!-- Close ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="closeIcon">...</item>
<!-- Search ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="searchIcon">...</item>
<!-- Go/commit ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="goIcon">...</item>
<!-- Voice search ãã¿ã³ã¢ã¤ã³ã³ -->
<item name="voiceIcon">...</item>
<!-- ã¯ã¨ãª ãµã¸ã§ã¹ãã§ã³è¡ã«è¡¨ç¤ºããã Commit ã¢ã¤ã³ã³ -->
<item name="commitIcon">...</item>
<!-- ã¯ã¨ãª ãµã¸ã§ã¹ãã§ã³è¡ã® ã¬ã¤ã¢ã¦ã -->
<item name="suggestionRowLayout">...</item>
</style>
ã»ã¨ãã©ã®ã¢ããªã«ããã¦ã¯ããã©ã«ãã®ã¾ã¾ã§ãæ£å¸¸ã«æ©è½ãã¾ãã®ã§、ãããããã¹ã¦(ããã㯠1 ã¤ã)è¨å®ããå¿
è¦ã¯ããã¾ãã。
Toolbar ãä»ããã«…
ãã®è¨äºã AppCompat ã®ä½¿ãã¯ããã¨、ç´ æ´ããããããªã¢ã« ã¢ããªã®è£½ä½ã®ä¸å©ã¨ãªããã°å¹¸ãã§ã。AppCompat ãã¯ããã¨ãããµãã¼ã ã©ã¤ãã©ãªã«ã¤ãã¦ã®è³ªåã、ããã¥ã¡ã³ããå¢ããã¹ãåéãããã¾ããã、ã³ã¡ã³ãæ¬ã Google+、Twitter ãªã©ã§ãç¥ãããã ãã。
FAQ
Lollipop å°å
¥åã®ããã¤ã¹ã§ EditText(ãããã¯åè¿°ã®ã¦ã£ã¸ã§ããã®1ã¤)ãæ£ããè²ä»ãããã¦ããªãã®ã¯ãªãã§ãã?
AppCompat ã®ã¦ã£ã¸ã§ããè²ä»ãã¯、ã¬ã¤ã¢ã¦ã inflation ãæç¥ãã¦、è²ä»ãã«å¯¾å¿ããç¹å¥ãªã¦ã£ã¸ã§ããã代ããã«å·®ãè¾¼ãä»çµã¿ã«ãªã£ã¦ãã¾ã。ã»ã¨ãã©ã®å ´åã¯ããã§æ£ããæ©è½ãã¾ãã、ä¸è¨ã®ãããªä¾å¤ã±ã¼ã¹ãèãããã¾ã。
å½è©²ã¦ã£ã¸ã§ãããã«ã¹ã¿ãã¤ãºããã¦ãã(ã¤ã¾ã EditText ãæ¡å¼µãã¦ãã)
LayoutInflater ãªã㧠EditText ãä½æãã¦ãã(ã¤ã¾ãæ°è¦ã® EditText() ãã³ã¼ã«ãã¦ãã)
è²ä»ãã«å¯¾å¿ããç¹å¥ãªã¦ã£ã¸ã§ããã¯æªå®æã®ãã、ç¾å¨é ããã¦ãã¾ã。ä»å¾å¤ããå¯è½æ§ãããã¾ã。
Lollipop å°å
¥åã®ããã¤ã¹ã§ã¯ç¹å®ã®ã¦ã£ã¸ã§ããã«ãããªã¢ã« ã¹ã¿ã¤ã«åããã¦ããªãã®ã¯ãªãã§ãã?
ç¾æç¹ã¾ã§ã§ã¢ãããã¼ããããã®ã¯、æãåºã使ããã¦ããã¦ã£ã¸ã§ããã ãã ããã§ã。ä»å¾ã® AppCompat ãªãªã¼ã¹ã¨ã¨ãã«å¢ãã¦ããã¾ã。
android:windowContentOverlay 㯠null ã«è¨å®ãã¦ããã®ã«、Android Lollipop ã§ç§ã® Action Bar ã«ã·ã£ãã¦ãããã®ã¯ãªãã§ãã?
Lollipopã§ã¯、æ°ãã Elevation API ã使ã£ã¦ Action Bar ã«ã·ã£ãã¦ãä»ä¸ãã¦ãã¾ã。åãé¤ãã«ã¯、getSupportActionBar().setElevation(0) ãã³ã¼ã«ããã、Action Bar ã¹ã¿ã¤ã«ã§ Elevation å±æ§ãè¨å®ãã¾ã。
Lollipop å°å
¥åã®ããã¤ã¹ã§ã¯ãªããã«å¹æããªãã®ã¯ãªãã§ãã?
RippleDrawable ã®åä½ã¯ Android 5.0 ã®æ°ãã RenderThread ã«å¤§ããä¾åãã¾ã。ç¾ç¶ 5.0 ããåã®ãã¼ã¸ã§ã³ã® Android ã§ã¯、ããã©ã¼ãã³ã¹æé©åã®ãã RippleDrawable ã¯å«ã¾ãã¦ãã¾ãã。
Preferences 㧠AppCompat ã使ç¨ããã«ã¯ã©ããããããã§ãã?
API v11 以ä¸ã®ããã¤ã¹ã§ã¯、å¼ãç¶ã ActionBarActivity 㧠PreferenceFragment ã使ç¨ã§ãã¾ã。ããããå¤ãããã¤ã¹ã§ã¯ãããªã¢ã« ã¹ã¿ã¤ã«åããã¦ããªã、é常㮠PreferenceActivity ãæä¾ããå¿
è¦ãããã¾ã。
Posted by èæ¨ä½ä¸ Developer Relations Team