如何使名字开头的两个字符首字母缩略的缩略图?

Sub*_*dey 2 android thumbnails kotlin android-recyclerview

我想在图像视图中像“ Peter Parker”一样用两个单词缩略的首字母缩略词,但是在运行代码时只能得到一个单词“ P”,而在我的代码空间之后如何获得第二个单词。

  holder.imgName?.text=teamData[position].userImage.substring(0,1)
Run Code Online (Sandbox Code Playgroud)

Mar*_*eng 9

您可以通过以下方式进行操作:

val peterParker = "Peter Parker"

val initials = peterParker
        .split(' ')
        .mapNotNull { it.firstOrNull()?.toString() }                     
        .reduce { acc, s -> acc + s }

println(initials) //PP
Run Code Online (Sandbox Code Playgroud)

这将涵盖一个人的名字包含两个以上单词的情况。

  • @AtifAbbAsi 当然,只需在 `mapNotNull` 之后添加 `.take(2)` (4认同)

小智 5

我做了一些技巧并用按钮实现了这个头像,哈哈;p

创建profile_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid
        android:color="@color/colorWhite"/>

    <corners
        android:radius="500dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

然后main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#4300313A"
    tools:context=".MainActivity">

    <Button
        android:onClick="clicked"
        android:id="@+id/avatar"
        android:clickable="false"
        android:focusable="false"
        android:textColor="@color/colorPrimary"
        android:textSize="65sp"
        android:focusableInTouchMode="false"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:background="@drawable/profile_bg"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"/>

    <EditText
        android:id="@+id/edtname"
        android:layout_below="@+id/avatar"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:hint="Enter your name"/>

    <Button
        android:onClick="clicked"
        android:textColor="@color/colorBackground"
        android:text="Submit Name"
        android:textStyle="bold"
        android:focusableInTouchMode="false"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/edtname"
        android:layout_marginTop="50dp"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

然后在MainActivity.java 中(使用stringbuilder拆分字符串并获取每个单词的第一个字母 ~ 名称在 if 条件中)

    public class MainActivity extends AppCompatActivity {

        EditText editText;
        Button button;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            editText = (EditText) findViewById(R.id.edtname);
            button = (Button) findViewById(R.id.avatar);

        }

        public void clicked(View view) {

            String str = editText.getText().toString();

            String[] strArray = str.split(" ");
            StringBuilder builder = new StringBuilder();

//First name
            if (strArray.length > 0){
                builder.append(strArray[0], 0, 1);
            }
//Middle name
            if (strArray.length > 1){
                builder.append(strArray[1], 0, 1);
            }
//Surname
            if (strArray.length > 2){
                builder.append(strArray[2], 0, 1);
            }

            button.setText(builder.toString());
        }
    }
Run Code Online (Sandbox Code Playgroud)