スタイル属性を動的に取得する方法はありますか?スタイル属性を動的に取得する
例えば、リソースIDを見つけるために、私が使用することができます:スタイル属性を取得するには、これに似た何かが
context.getResources().getIdentifier("idtofind", "id", context.getPackageName());
ありますか?
少し背景...私はカスタムスライド式引き出しを持っているライブラリを持っています。これは、プロジェクトの/values/attrs.xmlにカスタムスタイルの属性を持っています。
私はそれをGLEのUIにドロップしましたが、ハンドルとコンテンツのIDを見つけることができないため、表示されません。 styleableは、int型の配列なので、getIdentifier()は動作しませんように私は、上記目的を達成するかどうかはわかりません
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DrawerSlider, defStyle, 0);
:行はこれです。
EDIT:
[OK]を、私は物事が今のコードの罰金に仕事を得ることができたが、それでもGLEとの問題を抱えてきました。もう少し明確にするつもりです。私が言ったように、これは自由に利用できる図書館のためのものです。
テストの結果、getIdentifierを使用しても機能しないことが判明しました。アプリケーションを実行していない限り、常に0が返されます。今、私は必要なすべての属性(ハンドル、コンテンツ、方向など)のIDを取得するためにAttributeSetを手動で解析しています。 GLEはこれを処理するとき、それを表すリソースintではなく、+ id/handleを返します。
GLEがR.id static intに直接フィードするのは唯一のようです。新しいバージョンのADT(私はr17にあります)を参照すると、ライブラリのリソースを参照することはできません。必要なリソースIDを動的にフィードする方法はありません。
現時点では、これを機能させる唯一の方法は、ユーザのプロジェクトにドロワ自体のソースファイルを配置することです。可能であれば、これを避けたいと考えています。それは、新しいプロジェクトの作成時にプロジェクトのソースディレクトリに配置するか、右クリックサブメニューコマンドを追加して配置することを意味します。どちらもちょうど良い回避策のように思えます。
を試みることができるが、hackbod、ありがとうございました。これが私の 'obtainStyledAttributes()'の問題に対する答えであることを理解する前に、これを3回読んでいるに違いありません。 Imho、ドキュメントでこれが言及されていれば良いでしょう。 –
私はTypedArrayを取得すると、リソースIDに含まれるすべてのリソースIDを調べる方法を知りませんので、リソース識別子に対して正しい「ソート」順序がどのように決定されるのか理解できません。私の神、どうしたの? – rmirabelle