カスタムコントロールでdeclare-styleable
のようなXMLを使用して(Androidの追加パラメータを使わずに)カスタム属性をAndroidフラグメントで定義したいと考えています。しかし、AttrSetパラメータを持つコンストラクタはないので、それは可能ですか?属性を取得するためにpublic void onInflate(android.app.Activity activity, android.util.AttributeSet attrs, android.os.Bundle savedInstanceState)
をオーバーライドできますか?Androidフラグメントのカスタム属性
答えて
@Override
public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) {
super.onInflate(activity, attrs, savedInstanceState);
// Your code here to process the attributes
}
サポート4Demosのリンクが変更されたり、完全なソリューションを投稿するように変更することができます。ここに行く。
のres /値のフォルダにattrs.xmlファイルを作成します。または、ファイルがすでに存在する場合は、下のコンテンツを追加します。それ
/** * Parse attributes during inflation from a view hierarchy into the * arguments we handle. */ @Override public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) { super.onInflate(activity, attrs, savedInstanceState); Log.v(TAG,"onInflate called"); TypedArray a = activity.obtainStyledAttributes(attrs,R.styleable.MyFragment); CharSequence myString = a.getText(R.styleable.MyFragment_my_string); if(myString != null) { Log.v(TAG, "My String Received : " + myString.toString()); } int myInteger = a.getInt(R.styleable.AdFragment_my_integer, -1); if(myInteger != -1) { Log.v(TAG,"My Integer Received :" + myInteger); } a.recycle(); }
で
フラグメントの<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyFragment"> <attr name="my_string" format="string"/> <attr name="my_integer" format="integer"/> </declare-styleable>
オーバーライドonInflateデリゲートと読み属性は次のようにあなたのレイアウトファイルでこれらの属性を渡します。ただ、たとえば、すべてのthats
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is android activity" /> <fragment android:id="@+id/ad_fragment" android:name="com.yourapp.packagename.MyFragment" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" app:my_string="Hello This is HardCoded String. Don't use me" app:my_integer="30" /> </RelativeLayout>
。その実用的な解決策。
xmlで名前空間エラーが発生した場合にこれを実行します。 プロジェクトのクリーニングを何度も試みてください。 これは哀れですが、時には日食と誤解を招くことがあります。
は、それが他の人の役に立てば幸い:)コンパイル中
乾杯
私のAndroidスタジオはXMLでカスタム属性を表示し続けていましたが、赤い下線はエラーがあることを示していますが、プロジェクト全体がうまく構築されています。レイアウトファイルのエラーを正しく見ていないと思うかもしれない人のためのFYI。 – Pocha
xmlns:app = "http://schemas.android.com/apk/res/com.yourapp.packagename"の代わりに 'http:// schemas.android.com/apk/res-auto'を使用すると自動 - 代替パッケージ名。 http://stackoverflow.com/questions/10448006/xml-namespace-declaration-auto-substitute-package-name –
[OK]を私は前に1つを逃した。私のように、これをいくつかの場所から貼り付けてコピーしたら、注意を払い、名前空間が一致することを確認してください。 ** xmlns:$ {NameSpace} **および** $ {NameSpace} **属性で同じ:attribute = "..." – TacB0sS
- 1. Androidのカスタム属性
- 2. androidデータバインディングのカスタムXML属性
- 3. Androidラジオボタンのカスタム属性
- 4. カスタム属性vs data- *属性
- 5. カスタム属性を持つAndroidカスタムビュー
- 6. TwoLineListItem - カスタム属性
- 7. htmlpurifierカスタム属性
- 8. OrderByカスタム属性
- 9. C# - カスタム属性
- 10. は、カスタム属性
- 11. ActionResultのカスタム属性
- 12. カスタムDataAnnotationの属性
- 13. Reactのカスタム属性
- 14. jQueryの:カスタム属性
- 15. クラスメンバーのカスタム属性
- 16. 他のカスタム属性からカスタム属性のバインディングにアクセスする
- 17. カスタムMVC3キャッシュフィルタ属性
- 18. カスタムbelongs_to属性ライター
- 19. は、私はカスタム検証属性を作成したカスタム属性
- 20. jadeのボタンのカスタム属性
- 21. 配列型のカスタム属性
- 22. ILMergeとカスタム属性のクラス
- 23. 角翻訳のカスタム属性
- 24. Json.Netのカスタム属性処理
- 25. Magentoのカスタム属性がYES
- 26. Aurelia.io:カスタム属性のオプション
- 27. Three.js:ジオメトリのカスタム属性
- 28. カスタム属性の使用
- 29. Silverlightでのカスタム属性バインド
- 30. プロパティからのカスタム属性#
がエラーを取得: '... \アプリ\ RES \レイアウト\のselect_category.xml:26:エラー:属性のshowRadioButtonsが見つかりませんリソース識別子を'com.companyX.projectY' ... \ app \ res \ layout \ select_category.xml:26:エラー: 'com.companyX.projectY'パッケージの属性 'highlightSelection'のリソース識別子が見つかりません .. 。com:appcompanyX.projectY ' – Anton
app xml namespaceとdeclare-stylableに書かれている属性' unselectedColor 'のリソース識別子が見つかりませんでした。\ app \ res \ layout \ select_category.xml:26:間違いなく必要に応じてそれらを提供することができます – Anton