亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法更改首選項標題中圖標的顏色?

有沒有辦法更改首選項標題中圖標的顏色?

紅糖糍粑 2023-03-23 13:41:38
我已經在我的首選項頭文件中添加了一些圖標(作為 SVG),我想用 Java 更改它們的顏色(我的應用程序是主題化的,我找不到任何其他方法來根據主題更改圖標顏色) .我已經嘗試過以類似于按鈕等的方式更改圖標的顏色......我也無法使用“app:tint”屬性更改顏色并且無論如何它都不會隨著主題而改變我愿意。這是首選項標頭代碼。我想改變“ic_round_settings”的顏色。<header      android:fragment="com.appname.settings.fragment.GeneralSettingsFragment"         android:icon="@drawable/ic_round_settings"         android:title="@string/settings_general"         android:summary="@string/settings_general_explain" />
查看完整描述

2 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

好的,我找到了一種方法。如果您將 attr 屬性添加到首選項標頭,如下所示:

<header
        android:fragment="com.appname.settings.fragment.GeneralSettingsFragment"
        android:icon="?attr/ic_round_settings"
        android:title="@string/settings_general"
        android:summary="@string/settings_general_explain" />

并將該屬性添加到值文件夾中的 attr.xml 文件:

<attr name="ic_round_settings" format="reference"/>

并將其添加到帶有明暗版本圖標的 styles.xml 中的主題類中,主題將發生變化:

<style name="Theme.BaseLightTheme" parent="Theme.AppCompat">
    <item name="ic_round_settings">@drawable/ic_round_settings_dark</item>
</style>
<style name="Theme.BaseDarkTheme" parent="Theme.AppCompat">
    <item name="ic_round_settings">@drawable/ic_round_settings_light</item>
</style>

在 SVG 圖標文件中,將淺色 SVG 圖標副本中的顏色從#000000 更改為#ffffff:

<path
      android:fillColor="#000000"
      android:pathData=""/>

編輯:這不適用于 Android 4.4 及以下版本——圖標根本不會出現


查看完整回答
反對 回復 2023-03-23
?
森林海

TA貢獻2011條經驗 獲得超2個贊

要實現該行為,請像這樣使用對 XML 中顏色的引用


<FrameLayout 

    xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:layout_width="match_parent"

    android:layout_height="match_parent">


    <TextView

                android:id="@+id/btn_send"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:textColor="?attr/colorAccent"

                android:tint="?attr/colorAccent"

                android:text="@string/chat_send_text"

                android:drawableTint="?attr/colorAccent"

                android:drawableRight="@drawable/ic_paper_plane"/>

</FrameLayout>

此外,在處理活動時**確保在使用**之前設置主題,否則在動態設置主題時setContentView(R.layout_your_layout_file)必須調用。recreate()


例子

override fun onCreate(savedInstanceState: Bundle?) {

    setTheme(whatever_theme_you_want_to_use)

    setContentView(R.layout.activity_cool)

    // Further view initialization

}

缺點是您必須setTheme在所有活動中明確指出,因為 Android 沒有為開發人員提供更簡單的方法來更改整個應用程序的主題。


查看完整回答
反對 回復 2023-03-23
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號