2016-07-15 2 views
1

カスタムViewコンストラクタのパラメータとしてAttributeSetを渡す必要があります。ここで私は渡す必要がある属性は次のとおりです。アンドロイドAppWidgetのカスタムビューコンストラクタのパラメータとしてAttributeSetを渡します。

<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="DonutChart"> <attr name="radiusDonut" format="dimension"/> <attr name="donutTextSize" format="dimension"/> </declare-styleable> </resources>

私は私が私のAppWidgetにRemoteViewに私のカスタムビューを追加することために、コードでこれを行う必要があります。どのように私はこれを達成することができます誰も考えを持っていますか?

答えて

0

XmlPullParserを使用してXMLリソースから属性を取得し、次のように渡すことができます。res_idを上記のファイルのIDに置き換えます。

XmlResourceParser resourceParser = activity.getResources().getXml(R.xml.res_id); 
AttributeSet attrs = Xml.asAttributeSet(resourceParser); 

CustomView view = new CustomView(activity, attrs); 
+0

タグdeclare-styleableを使用してattrs.xmlファイルを作成しましたが、getXml関数はスタイル可能では機能しません。 – vikifor

+0

したがって、私が見つけた解決策は、おそらく良くないことです。コードで属性を設定し、コンストラクタでnullパラメータを使用してビューを作成することです。私がAttributeSetをコンストラクタで渡さないと、エラーが発生します:ウィジェットをロードする際の問題 – vikifor

+0

申し訳ありませんが、私はdeclare-styleableで動作しないとは思いませんでした。 decalre-styleableは本当に必要ですか?あなたが*コードでそれをする*場合は、あなたが言ったようにコードを介して属性を設定するのはいいです。コンテキスト/アクティビティをコンストラクタに渡すだけです。つまり、2番目の引数は一切ありません。 CustomViewビュー=新しいCustomView(アクティビティ)。 –

関連する問題