[解決済み] styles.xml からプログラムによってスタイル属性を取得する方法
2023-04-04 11:05:28
質問
現在、私はWebViewまたはTextViewのいずれかを使用して、私のアプリケーションの1つでWebサービスから来るいくつかの動的なデータを表示しています。 データが純粋なテキストを含んでいる場合、それはTextViewを使用し、styles.xmlからスタイルを適用します。 データにHTML(主にテキストと画像)が含まれている場合は、WebViewを使用します。
ただし、このWebViewはスタイルが設定されていません。そのため、通常のTextViewとはかなり異なる外観になっています。 HTMLをデータに直接挿入することで、WebViewのテキストにスタイルを設定することが可能であることを読みました。これは簡単そうですが、このHTMLに必要な値としてStyles.xmlのデータを使用したいので、スタイルを変更しても2か所で色などを変更する必要がありません。
では、どのようにしてこれを行うことができるでしょうか?広範囲にわたって検索してみましたが、styles.xml から異なるスタイル属性を実際に取得する方法は見つかりませんでした。 私がここで何かを見逃しているのか、それともこれらの値を取得することは本当に不可能なのでしょうか?
私がデータを取得しようとしているスタイルは次のとおりです。
<style name="font4">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">14sp</item>
<item name="android:textColor">#E3691B</item>
<item name="android:paddingLeft">5dp</item>
<item name="android:paddingRight">10dp</item>
<item name="android:layout_marginTop">10dp</item>
<item name="android:textStyle">bold</item>
</style>
主にtextSizeとtextColorに興味があります。
どのように解決するのですか?
カスタムスタイルの取得は
styles.xml
からカスタムスタイルを取得することができます。
で任意のスタイルを定義する。
styles.xml
:
<style name="MyCustomStyle">
<item name="android:textColor">#efefef</item>
<item name="android:background">#ffffff</item>
<item name="android:text">This is my text</item>
</style>
ここで、次のようにスタイルを取得します。
// The attributes you want retrieved
int[] attrs = {android.R.attr.textColor, android.R.attr.background, android.R.attr.text};
// Parse MyCustomStyle, using Context.obtainStyledAttributes()
TypedArray ta = obtainStyledAttributes(R.style.MyCustomStyle, attrs);
// Fetch the text from your style like this.
String text = ta.getString(2);
// Fetching the colors defined in your style
int textColor = ta.getColor(0, Color.BLACK);
int backgroundColor = ta.getColor(1, Color.BLACK);
// Do some logging to see if we have retrieved correct values
Log.i("Retrieved text:", text);
Log.i("Retrieved textColor as hex:", Integer.toHexString(textColor));
Log.i("Retrieved background as hex:", Integer.toHexString(backgroundColor));
// OH, and don't forget to recycle the TypedArray
ta.recycle()
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] アプリケーションからAndroidのWebブラウザでURLを開くにはどうすればよいですか?
-
[解決済み] Androidでプログラム的にスクリーンショットを撮るには?
-
[解決済み】Android:プログラムによるビュースタイルの設定
-
[解決済み】TextViewのスタイルをプログラムで設定する
-
[解決済み] styles.xmlのカスタム属性
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] キャンバスに複数行のテキストを描画する
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理