如何将文本设置为像 gmail 收件箱一样的 imageview?

How to set text to the imageview like gmail inbox?

我要设计
像这样。如何将第一个字符设置为该圆圈,圆圈的颜色应该是随机的。

试试这个 根据您的要求更改颜色。

您将以编程方式添加颜色。

并使用此 link

务实地添加文本

文本视图-

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/ic_baseline_circle_24"
        android:gravity="center"
        android:maxLength="1"
        android:padding="10dp"
        android:text="M"
        android:textColor="@android:color/white"
        android:textSize="12sp"
        android:textStyle="normal" />

加入res/drawable/ic_baseline_circle_24.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:tint="#41B582"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="@android:color/white"
        android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2z" />
</vector>

您不能直接将文本设置为图像视图,但您可以使用相对布局Text-View 来这样做。 让我们看看如何。

这是结果:-

这是代码

这是您的 xml 布局文件的代码

<androidx.cardview.widget.CardView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:cardCornerRadius="100dp"
    app:cardBackgroundColor="@color/transparent">

    <RelativeLayout
        android:layout_width="150dp"
        android:layout_height="150dp">

        <ImageView
            android:id="@+id/img"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@null"
            android:background="@color/grey"
            />

        <TextView
            android:id="@+id/person_name_first_letter_txt"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="K or whatever your person name is"
            android:maxLength="1"
            android:textColor="@color/white"
            android:textSize="80dp"
            android:gravity="center"
            />

    </RelativeLayout>


</androidx.cardview.widget.CardView>

这里是用于在 colors.xml

中选择随机颜色的颜色数组
<array name="random_color_array">
    <item>#37BFA8</item>
    <item>#F50057</item>
    <item>#3D5AFE</item>
    <item>#FF3D00</item>
    <!-- add more colors according to your need-->
</array>

下面是 java

中 activity 的代码
TextView name_text = findViewById(R.id.person_name_first_letter_txt);
ImageView background_image = findViewById(R.id.img);
String user_name = "John Doe";

String[] colorsTxt = getApplicationContext().getResources().getStringArray(R.array.allcolors);
List<Integer> colors = new ArrayList<Integer>();
for (int i = 0; i < colorsTxt.length; i++) {
  int newColor = Color.parseColor(colorsTxt[i]);
  colors.add(newColor);
}
     
Random random = new Random();
int color = colors[random.nextInt(colors.length)]; 
  
background_image.setBackgroundColor(getResources().getColor(color));
name_text.setText(user_name);