如何将文本设置为像 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);
我要设计
像这样。如何将第一个字符设置为该圆圈,圆圈的颜色应该是随机的。
试试这个 根据您的要求更改颜色。
您将以编程方式添加颜色。
并使用此 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);