問題タブ [android-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.

0 投票する
1 に答える
215 参照

android - テーマを使用して Android スタイルを変更する

私はいくつかの異なるアプリを持っていますActivities。さまざまなアクティビティには、さまざまなスタイルのボタン、テキストなどがあります。場所/アクティビティに基づいてさまざまなスタイルを持つように、すべてのコンポーネントを設定しました。(例: style="@style/MainMenuActionBarTitle、またはstyle="@style/MainMenuActionBarTagLine)。これらのスタイルはbackground( DrawableMipMap、またはColor)、textColorなどを設定します...

アプリは、アプリケーション全体でこれらのさまざまなコンポーネントの色を変更するいくつかのテーマ パックを提供する予定です。同じ名前で、アプリの設定Stylesに基づいて異なる値を持つ方法があることを望んでいました。Themeこのようにして、ユーザーが選択したテーマに が読み込まThemeれるたびにを変更できます。Activity

テーマを使用して標準のウィジェットのルック アンド フィールを変更する方法については、ここにいくつかの良い情報がありますが、それは標準の非スタイル ウィジェットのルック アンド フィールを変更します。

テーマを使用してこれを達成する方法はありますか、またはこれは完全に間違った方向ですか? より良い/より簡単なルートはありますか?

編集:より多くの調査とより多くの操作を行った後、私がやりたいことは、これを達成する方法とそう遠くないことに気付きました。私がしたいのは、 の を設定するときに実際にコンポーネントを変更することStylesです。ThemeActivity

0 投票する
4 に答える
3282 参照

android - selectableItemBackground 使用時の android.view.InflateException

レイアウトを拡張すると、次の例外が発生します。

ログに「Caused by」はありませんが、例外をキャッチしてgetCause()null が返されるまで呼び出すコードを追加しました。イベントのシーケンスは次のとおりです。

0x7f020096 はselectable_list_background(以下を参照) であり、それが参照する TypedValue は です?selectableItemBackground

の使用に例外を絞り込みました?selectableItemBackground。具体的には、CardView を使用しています。

そして、これはの関連部分ですdrawable/selectable_list_background

このアクティビティは私自身のテーマを使用しています。その親はTheme.AppCompat.Light.NoActionBarです。

このコードは以前は機能していましたが、数か月後にこのコードを掘り下げたところ、例外が発生してクラッシュします。私の推測では、これはサポート ライブラリを 23.0.1 にアップグレードし、SDK を 23 にアップグレードすることに関連していると思われますが、それを確認するためにまだ 22 に戻していません。

を参照する1行を削除すると、すべて正常に機能します?selectableItemBackground?attr/selectableItemBackgroundとも試し?android:attr/selectableItemBackgroundましたが、同じ結果が得られました。(後者は、サポートライブラリの問題ではないかもしれないと私に信じさせます)。

編集:

デバッガーでそれを調べたところandroid.content.res.Resources、 内のこのコードである疑いがありloadDrawable()ます。

この関数はテーマを受け取りますが、loadDrawableForCookie()最終的に最初の例外をトリガーするメソッドである を呼び出すときにそれを渡さないことに注意してください。

このコードは Android 6.0 の新しいコードのようです。5.0 のコードはかなり異なりますが、ドローアブルをロードするときにテーマが渡されます。そしてテーマは必要です AFAICT - 問題の属性は の一部でAppCompatあるため、それを解決するにはアクティビティのテーマが必要です。

しかし、それはあからさまなバグのように思えるので、ここで正しい軌道に乗っているとは確信していません。何か案は?

0 投票する
5 に答える
27690 参照

android - Android でクラス Button をインフレート中にエラーが発生しました

min sdk 16 から 23 までのアプリケーションがあります。できるだけマテリアル デザインを使用したいと考えています。また、フルスクリーンアプリである必要があります。AppCompat サポート ライブラリが含まれています。これで、いくつかのボタンを使用したログオン アクティビティができました。

スタイルは次のとおりです (values/styles.xml):

そして値/属性で:

属性font_mediumは、ここで説明されているように定義されています。私が理解できない動作は、Logon アクティビティが開かれると、すべてが正常で、例外がないということです。しかし、フラグメントが内部にある Logon アクティビティから別のアクティビティを開いて、フラグメントにこのスタイルのボタンがあると、「クラス ボタンの膨張エラー」という例外が発生します。ButtonDefault スタイルからtextSize属性を削除すると、すべてが機能します。なぜどこかで機能し、どこかで機能しないのですか? カスタム属性に何か問題がありますか?

そのスタイルで values-v21/styles.xml を作成しようとしましたが、効果がありませんでした。

次の親スタイル定義の違いについても説明していただけますか? 道に迷います。

ありがとうございました。

編集 1 - 例外:

0 投票する
3 に答える
576 参照

android - このカスタム ビュー属性が無視されるのはなぜですか?

この Android Developers postで説明されているように、 Data Binding Libraryを使用して任意のビューの属性を定義しようとしています。

<layout>そのためには、最初にタグを囲むレイアウトが必要であると投稿は述べています。

この時点で、レイアウトはClassNotFoundExceptionwhen inflatedを引き起こしました。それを取り除く唯一の方法は、<data></data>ノードを追加することでした。たとえ Android 開発者の投稿にはなかったとしてもです。

(投稿では言及されていませんが、ビルドする前に、ガイドで推奨されdataBindingているように有効にする必要がありました。)build.gradle

BindingAdapterこの投稿では、属性を処理するメソッドの書き方について説明しています。

ただし、bindAttributeメソッドが呼び出されることはありません。ビルド フォルダーにレイアウト用に生成されたコードが表示されますが、他に何も起こりません。

BindingAdapter が無視されるのはなぜですか?