2010年5月26日水曜日

更新のMenuIcon

android.R.drawableには無いんだけど、[AndroidSDK]/platforms/android-1.6/data/res/drawableフォルダにはic_menu_refresh.pngってのが存在している。


謎だ。


仕方がないのでpngファイルを自分のワークスペースにコピーして使用。



無事表示できたんだけど、グラデーションしてくれない。
GMailアプリとかも同じだからこういうものなのか?
画像の問題?

2010年5月25日火曜日

OptionMenuの表示

こんな感じのメニューを作成
  

[menu.xml]
<menu android="http://schemas.android.com/apk/res/android">
<item title="menu01" id="@+id/menu01"></item>
<item id="@+id/menu02" title="menu02" icon="@android:drawable/ic_menu_more">
<menu>
<item checkable="false" title="item01" id="@+id/item01"></item>
<item checkable="true" title="check01" id="@+id/check01"></item>
<group id="@+id/group01" checkablebehavior="all">
<item id="@+id/check02" title="check02"></item>
<item title="check03" id="@+id/check03"></item>
</group>
</menu>
</item>
<item title="メニュー3" id="@+id/menu03" titlecondensed="menu03" icon="@android:drawable/ic_menu_more">
<menu>
<group checkablebehavior="single" id="@+id/group02">
<item id="@+id/select01" title="select01" checked="true"></item>
<item title="select02" id="@+id/select02"></item>
<item id="@+id/select03" title="select03"></item>
</group>
</menu>
</item>
</menu>

・GroupのcheckableBehaviorをall→チェックボックス
・GroupのcheckableBehaviorをsingle→ラジオボタン
・checkableBehaviorの設定した場合は、子Itemのcheckableを設定しない。
・親ItemのtitleとtitleCondensedを設定すると、メニューの名前(ここだとmenu03)とサブメニューのタイトル(メニュー3)に異なる文字を表示できる。

※階層はこんな感じ

[Activity.onCreateOptionsMenu]
  @Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu);
return true;
}

[Activity.onOptionsItemSelected]
  @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.check01:
case R.id.check02:
case R.id.check03:
if (item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
return true;
case R.id.select01:
case R.id.select02:
case R.id.select03:
item.setChecked(true);
return true;
}

return super.onOptionsItemSelected(item);
}