問題タブ [android-custom-attributes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - AndroidでAttributeSet値を変更する
コンストラクター値として属性セット(xml値)を取るカスタムビューがあります
フラグメントクラスでは、ビューを次のように設定しています
カスタムビューには、高さ、幅、パディングなどのさまざまな値が含まれています。
必要な条件に基づいてこれらの値を変更し、カスタム ビューに戻します。onDrawメソッドに width height コードを配置し、invalidte ビューを呼び出しました。しかし、上記のメソッドは、CustomView クラスで無効化メソッドを呼び出した場合に毎回設定されます。これを克服して、コンストラクターのみで変更された属性セット値を渡すことができるようにするにはどうすればよいですか?
編集:新しい値で更新されたビューを取得できるように、属性コンストラクター中に設定されたビュー値を変更する(新しい値で初期化する)必要があります。@OnDraw または 'Invalidate' のオーバーライドは、invalidate の内部で 1 秒間隔ごとに実行されるメソッドを記述している私にとっては良い機能ではありません。
android - デフォルトの色を Android ライブラリに設定する
だから私は、他の人がそれを使用するときにその色を簡単にカスタマイズできるようにしたいAndroidライブラリを持っています。問題は、色が単なる単一のプロパティ (ビューの背景など) ではなく、テーマの色 (ビューの背景、テキストの色、ボタンのストロークなど) に似ていることです。ビュー属性として渡すことはできません。だから私はcolor reference
スタイル、レイアウト、ドローアブルでそれを使用することになりました:
色.xml:
レイアウト.xml:
ライブラリ プロジェクトの styles.xml:
それはうまく機能し、誰かが私のライブラリを使用しているとき、彼は自分のテーマで使用したい色を宣言する必要があります:
アプリ プロジェクトの styles.xml:
問題はこれです: このライブラリをデフォルトの配色で提供したいのです。現在、2 つのオプションで実行できます。
- デフォルトのカラーセットで自分のテーマを宣言すると、ユーザーは自分のテーマを自分のテーマから継承する必要があります。
- ユーザーが自分のテーマの色としてそれを使用できるように、私の color.xml に default_color を入れます。
最初のものは、ユーザーに特定のアプリ テーマ (AppCompact.Light など) を使用するように強制できないため、本当に悪いです。ユーザーがデフォルトをシームレスに使用できるようにする必要があり、テーマにいくつかの色を設定する必要があるため、2番目のものもそれほど優れていません。
他のユーザーが簡単に色を遊べるようにする方法が他にあると思いますか?
ありがとう。
android - カスタム android ビューが TypedArray を引数としてとらないのはなぜですか?
Android でカスタム ビューを作成する方法を学習し、ドキュメントを読んでいます。
カスタム ビューには、パラメーターとして AttributeSet が渡されます。ただし、ドキュメントには、次のコードを使用して TypedArray を取得するように記載されています
では、そもそも TypedArray を渡さないのはなぜでしょうか? 代わりに AttributeSet を調べたいのはいつですか?
ドキュメントでは、未加工の AttributeSet を検査しないように指定しています...
-属性値内のリソース参照は解決されません
なに?? これは、xml にカスタム属性 x=10 がある場合、解決されるまで 10 にならないということですか?
-スタイルは適用されません
xml x=10 にカスタム属性がある場合、スタイルを適用すると実際にはどうなりますか?
android - TypedArray の getResourceId メソッド
getResourceId()メソッドに関するドキュメントを読んでいます。次のように述べています。
インデックスの属性のリソース識別子を取得します。TypedArray オブジェクト全体が取得されると、属性リソースが解決されることに注意してください。結果として、この関数は見つかった最終的なリソース値のリソース識別子を返しますが、必ずしも属性によって指定された元のリソースではありません。
そう
- 最初の段落は明らかです。
インデックスの属性のリソース識別子を取得します。
- 2番目も明らかです:
TypedArray オブジェクト全体が取得されると、属性リソースが解決されることに注意してください。
- しかし、3段落はどういう意味ですか? 必ずしも元のリソース IDを返すとは限らないのはなぜ ですか?
結果として、この関数は見つかった最終的なリソース値のリソース識別子を返しますが、必ずしも属性によって指定された元のリソースではありません。
android - Android Resources.getIdentifier がカスタム属性に対して間違った値を返す
最近、私はたくさん使うプロジェクトに取り組んでいましたResources.getIdentifier()
。すべてが楽しく動作しますが、このメソッドを使用してカスタム属性を取得しようとすると問題が発生します。
だから私はいくつかの属性をxmlに宣言します
次に、この属性をxmlに適用します
FloatExpandMenuItem 内
ResourceUtils.getResId は、このように Resources.getIdentifier のラッパーでした
そして、奇妙なことが起こりました。私は FloatExpandMenuItem でデバッグしようとしましたが、ラベル、アイコン、showDot 属性を取得するときに ResourceUtils.getResId は常に 0 を返します。
Resources.getIdentifier() を使用するときにカスタム属性を処理しようとするときに、コードをどのように変更する必要があるのか 疑問に思っていましたか?
android - カスタム ビュー属性を介してスタイルを渡すときにテキストが太字にならないのはなぜですか?
次の.xml
スタイルがあるとします。
属性を介してカスタム ビューに渡したいと思います。
カスタム ビュー内で、スタイル付きの属性を取得し、それを に適用しますTextView
。
質問は:
テキストの色、サイズ、marginLeft が適切であるのに、太字でないのはなぜですか?
android - 文字列型の取得は許可されていません (値 '4f' の 'paintStroke' で) float 型の値属性のエラー
Android アプリケーションのカスタム ビューにカスタム属性を使用しています。カスタム属性に float 値を指定したいと考えています。
res/values/attrs.xml
res/レイアウト/view.xml
しかし、アプリケーションを実行しようとすると、次のエラーが表示されます
エラー:(15, 34) 文字列型は許可されていません (値 '4f' の 'paintStroke' で)。
作業スニペット:
カスタム float 属性値に「4」または「4.0」を指定するだけです。末尾に「f」を付ける必要はありません。