簡體   English   中英

Android 按鈕:如何以編程方式更改圖標

[英]Android button: How to change icon programatically

我通過擴充 XML 布局從 XML 數據動態地創建卡片列表。 這個布局有一個帶有虛擬值的按鈕來抑制 IDE 的警告,我想根據來自該 XML 資源的數據設置標簽和前導圖標。

我可以設置標簽,但找不到更改app:icon屬性的方法。

布局.xml:

...
<Button
    android:id="@+id/listItemAction"
    style="@style/Widget.MaterialComponents.Button.TextButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:text="@string/misc_load" <!-- dummy value -->
    app:icon="@drawable/ic_round_help_24" <!-- dummy value --> />
...

適配器.java:

...
viewHolder.action.setText(list.get(position).label); // it works
viewHolder.action.setIcon(list.get(position).icon); // there is no such method
...

可以試試以下兩種方法嗎

// Using icon resource ID
textButton.setIconResource(R.drawable.ic_show_black_18dp)
// Using icon Drawable
val showDrawable = AppCompatResources.getDrawable(context, R.drawable.ic_show_black_18dp)
textButton.icon = showDrawable

由於您使用的是 Material Components 主題,因此您的Button被替換為MaterialButton廣告運行時。

要應用setIcon方法,您必須使用MaterialButton

(button as MaterialButton).icon  = ContextCompat.getDrawable(this,R.drawable.xxx)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM