如何以編程方式設置視圖形狀和背景顏色?

阿爾佩倫·阿奇科茲

我必須創建一個圓形並隨機繪製它,但我必須以編程方式進行。它必須是這樣的

需要背景的TextView

val tvAuthorSubtext = TextView(context)
tvAuthorSubtext.apply {
   text = "AA"
   textSize = 10f
   setTextColor(ContextCompat.getColor(context, R.color.white))
   gravity = Gravity.CENTER
   typeface = ResourcesCompat.getFont(context, R.font.ubuntu)
   layoutParams = LinearLayout.LayoutParams(72, 72)
   setBackgroundResource(R.drawable.bg_author_shape)
   }

R.drawable.bg_author_shape

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
   <corners android:radius="12dp" />
   <solid android:color="@color/black" />
</shape>

getBackgroundRandomColor 函數

fun getRandomBackgroundColor() :Int {
  val colorArray : MutableList<Int> = mutableListOf()
  colorArray.add(R.color.aqua)
  colorArray.add(R.color.bright_blue)
  colorArray.add(R.color.bright_purple)
  colorArray.add(R.color.bright_pink)
  colorArray.add(R.color.bright_green)
  colorArray.add(R.color.orangey_yellow)
  colorArray.add(R.color.tealish)

  val rnds = (0..(colorArray.size-1)).random()

  return colorArray[rnds]

}
  1. 有沒有辦法在可繪製的 xml 中運行函數?
  2. 有沒有辦法改變形狀可繪製背景顏色而不改變其形狀
阿里巴巴迪

您無法在 xml 中更改可繪製形狀的背景顏色。要動態更改形狀的顏色,您必須創建自定義視圖。

我想出了這兩種方法:

方法 1:使用 Canvas 和 Paint 創建自定義視圖。這是一個有用的示例,說明如何以編程方式創建圓形並為其分配顏色。

使用 Canvas 和 Paint 創建 CustomView

onDraw()方法上繪製形狀時,您還可以繪製文本

方法 2:通過擴展 TheView或其他ViewGroup類來創建自定義視圖這是您應該如何做的一個簡單示例。

public class ColorOptionsView extends View {

private View mValue;
private ImageView mImage;

public ColorOptionsView(Context context, AttributeSet attrs) {
    super(context, attrs);

    TypedArray a = context.obtainStyledAttributes(attrs,
            R.styleable.Options, 0, 0);
    String titleText = a.getString(R.styleable.Options_titleText);
    int valueColor = a.getColor(R.styleable.Options_valueColor,
            android.R.color.holo_blue_light);
    a.recycle();

    // more stuff
}

}

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

如何以編程方式和主題方式更改工具欄圖標顏色?

如何使用 vimscript 以編程方式更改顏色方案?

如何在角度條形圖中為動態添加的條形設置新顏色

以編程方式設置 UIButton 的背景不起作用

在 Python 中的 Plotly 中按類別設置樹狀圖顏色

以編程方式更改狀態時可以為 NSSwitch 設置動畫嗎?

在來自 R 包 FactoExtra 的 fviz_pca 中指定顏色和形狀圖例

python中的雙向條形圖,如何刪除所有背景顏色?

如何以編程方式檢測本地和遠程分支是否不同?

添加子視圖後如何更新 stackView 的大小(以編程方式)?

如何在任意範圍內設置seaborn顏色圖?

沖積圖編輯比例和顏色

相同顏色的條形圖和線條圖位於條形後面

如何在android中將背景漸變(形狀)設置為矢量資產?

如何在 Flutter 的主小部件內為小部件設置背景顏色?

ImageMagick:如何根據圖像顏色創建背景顏色?

如何快速在 Xcode 中以編程方式更改圖標?

Avalonia:如何以編程方式向 UserControl 添加控件

如何以編程方式更改 AnimatedSprite 的紋理

如何以編程方式添加面板 winforms c#

如何以編程方式向 UIBarButton 添加操作?

如何通過地圖功能在單個項目上設置邊框顏色?

如何以編程方式重命名 .Java 文件中的字段、參數、類名和方法名?

以編程方式添加視圖與使用 recyclerView 有什麼區別?

如何更改背景顏色但保留背景圖像與 css 中的父元素

在 WPF 中為形狀分配顏色

在 r 中設置維恩圖中類別的顏色

UIKit:如何使用以編程方式創建的約束為約束更改設置動畫?

如何根據列中的顏色為條形圖著色

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv