2011-01-14 11 views
2

私は、ExpandableListViewが関わるアプリケーションに取り組んでいます。 groupIndicatorを私たち自身が選択したものに置き換える必要があります。ExpandableListView groupIndicatorアイコンの適切な寸法を決定する方法は?

私は、その後に使用するために私のレイアウトのxmlを設定

(拡大展開したりしない)
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/arrow_down" android:state_expanded="true"/> 
    <item android:drawable="@drawable/arrow_right"/>  
</selector> 

をセレクタの状態に応じて、異なるPNGを示すだろうインジケータの仕様を作成しました:

(色にそれを設定すると、盗聴されたようですのでchildDivider 1つの画素トールPNGなく色であることに留意されたい)

この私たちのアイコンが垂直方向に引き伸ばされている点を除いて、動作します。それは理にかなっています。なぜなら25x25のアイコンを作成して最高のものを望んでいたからです。私はネイティブアイコンの大きさを把握しようとしているので、それに合わせることができますが、それが問題に遭遇します。

ソースコード(ExpandableListView.java)を調べることで、デフォルトでは、クラスはcom.android.internal.R.styleable.ExpandableListView_groupIndicatorを使用することがわかりました。だから私はIDを持っていますが、まだアイコンはありません。

私が行うことができるのが大好きです:

Bitmap image = BitmapFactory.decodeResource(this.getResources(), com.android.internal.R.styleable.ExpandableListView_groupIndicator); 
     imWidth = image.getWidth(); 
     imHeight = image.getHeight(); 

しかし、「内部」が示唆するように、それはユーザ空間に私には見えないのです。

私もExpandableListView.javaでgetIndicateを()が見つかり、それはプライベートですので、私はどちらかそれを取得することはできません。

私は、プラットフォームのソースコードにダイビングに非常に新たなんだ、と私はそのイメージを追跡する方法が他に知りません。誰か助けてくれますか?

編集:ありがとうCommonsWare。

アンドロイド:drawable/expander_groupは/frameworks/base/core/res/res/drawable/expander_group.xmlで定義されています。
expander_group.xmlには、@ drawable/expander_ic_maximizedと@ drawable/expander_ic_minimizedが使用されていると記載されています。 これらドロワブルは、特定のために他の場所の間で、/frameworks/base/core/res/res/drawable/expander_ic_maximized.9.pngと/frameworks/base/core/res/res/drawable/expander_ic_minimized.9.pngで見つけることができます密度など。 "9"はデフォルトのアイコンに歪みの問題がない理由を説明しています - パッチ9のグラフィックです。密度に依存しないアイコンのバージョンは、34ピクセル×38ピクセルです。

答えて

8

base.gitcore/res/res/values/styles.xmlは、com.android.internal.R.styleable.ExpandableListView_groupIndicatorandroid:drawable/expander_groupと定義しています。これはSDKのリソースのコピーにStateListDrawableです。基礎となるPNGは、密度に基づいてサイズが異なります。

+0

こんにちは。あなたの高度なAndroidの本を愛し、それを書いていただきありがとうございます。この回答をお寄せいただき、ありがとうございました。私はあなたの助けを借りてリソースフォルダと適切なファイルを見つけることができました。 – MaximumGoat

+0

@MaximumGoat:うれしい答えと本が便利です! – CommonsWare

関連する問題