2013年7月7日日曜日

Navigation DrawerをActionBarSherlockで使ってみたい(デザインガイド非準拠)・・・その後

 

前回記事(リンク)の続きです。

 

前回までのあらすじ

妖精の森エクレアで安穏と暮らしていたニクニクは、異世界でえろい人が開発した武器ナビゲーションドロアーが楽しそうといううわさを耳にした。
しかし、ニクニクの愛車アクションバーシェーロック号にはそのナビゲーションドロアーが搭載できない。
こまったニクニクはいつものように(検索)窓に向かって「ナビゲーションドロアー!ナビゲーションドロアー!」と連呼していたところ、「パッチを感じるんだ」と神の声が聞こえてきた。
ニクニクは恐れながらも声のする方向へ歩いていくと、そこには恐るべき試練が待ち受けていたのであったニク。

 

本編

前回助けてっていってた件が暫定自己解決したのでその内容をうpしときます。
よくわかってない部分だれか教えてくれたらいいと思います。

 

何を変えたか

以下、見てきてください。

API7で動作版
android:attrの利用を直接指定とする
invalidateOptionMenu→supportInvalidateOptionMenuに変更
https://github.com/miquniqu/AbsNavigationDrawerSample/commit/80aff00c0567aa2a0d371f527e0eb8bdc8aac674

 

修正箇所の説明1

DrawerActivity.java

  1:              public void onDrawerClosed(View view) {
  2:                  getSupportActionBar().setTitle(mTitle);
  3: -                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
  4: +                supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
  5:              }
  6: 

→invalidateOptionsMenuをsupportInvalidateOptionsMenuに変更しわすれてたので一応。


 


修正箇所の説明2


drawer_list_item.xml


  1: <TextView xmlns:android="http://schemas.android.com/apk/res/android"
  2:     android:id="@android:id/text1"
  3:     android:layout_width="match_parent"
  4:     android:layout_height="wrap_content"
  5:     android:textAppearance="?android:attr/textAppearanceListItemSmall"
  6:     android:gravity="center_vertical"
  7:     android:paddingLeft="16dp"
  8:     android:paddingRight="16dp"
  9:     android:textColor="#fff"
 10: -    android:background="?android:attr/activatedBackgroundIndicator"
 11: -    android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
 12: +    android:background="@drawable/abs__activated_background_holo_dark"
 13: +    android:minHeight="48dp"/>
 14: 

これが正直よくわからない。
android:attrはテーマで設定している属性値を利用するってことで、今回利用しているActionBarSherlockのテーマでも、

  1: <style name="Theme.Sherlock" parent="Sherlock.__Theme">
  2:   ~
  3:   <item name="activatedBackgroundIndicator">@drawable/abs__activated_background_holo_dark</item>
  4: 

と宣言されている。
今回の対処は、テーマ属性経由ではなく、abs__activated_background_holo_darkを直接指定するように変更したら
そのセレクターで指定しているres/drawable-hdpi/abs__ic_ab_back_holo_dark.pngが読み込めるようになったというもの。


うーん。。


ともあれ、パッチが適用されたActionBarSherlockに追加修正することなくAPI7~17で利用できたのでよしとしよう。


[2013.07.07 追記]
なんておもってたのだけれど、sdk\extras\android\support\samples\Support4Demosにあるサンプルソースでは、
android.R.layout.simple_list_item_1を利用していたのでdrawer_list_item.xmlのカスタムレイアウトはやめて、
こっちに変更することにしました。


パッチ入手先とか



Android : Navigation Drawer をActionBarSherlockで使う
http://d.hatena.ne.jp/esmasui/20130606/1370517111
https://github.com/esmasui/ActionBarSherlock/commits/ActionBarDrawerToggle
※ABS4.2.0へのぱっち


上記ブログであげられてる4.3.1のパッチ?
https://github.com/ianhanniballake/ActionBarSherlock

今回の修正をいれたサンプルアプリ
https://github.com/miquniqu/AbsNavigationDrawerSample


おわり。

0 件のコメント:

コメントを投稿