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

时间:2018-11-21 07:25:35

标签: android android-recyclerview kotlin thumbnails

我想为我的图像视图(例如“ Peter Parker”)使用两个单词的缩略词首字母缩略词,但在运行代码时只能获得一个单词“ P”,而如何在我的代码占位后获得第二个单词。

  holder.imgName?.text=teamData[position].userImage.substring(0,1)

4 个答案:

答案 0 :(得分:4)

您可以通过功能性方式进行操作

val peterParker = "Peter Parker"

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

println(initials) //PP

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

答案 1 :(得分:0)

嗨,您可以使用以下方式

String str = "FirstWord SecondWOrd";
        String[] strArray = str.split(" ");
        StringBuilder builder = new StringBuilder();
        if (strArray.length > 0)
            builder.append(strArray[0], 0, 1);
        if (strArray.length > 1)
            builder.append(strArray[1], 0, 1);
        Log.d("New Text" , builder.toString());

答案 2 :(得分:0)

就像您使用子字符串只抓住位置0到位置1的字母,这是Petter中的P

holder.imgName?.text=teamData[position].userImage  

.substring(0,1)

如果您想使用Petter Parker一词,则有几种选择。
•IndexOf&Substring-查找字符串的位置并在其后获取子文本。
•Substring-基于参数的字符串的子文本

如果您打算在任何阶段更改文本长度,则需要找到单词的开头(int start = yourString.indexOf("Petter"));
int end = yourString.indexOf(" "的结尾)

IndexOf将返回查询中第一个字母的位置-您的情况是P在Petter中--因此start +“ petter” .length()

这是我正在使用的条形码价格检查器应用程序的示例

                    // STRING  FORMAT 00000899999:0.99   

                    String currentLine = "00000899999:0.99";
                    int breakPoint = currentLine.indexOf(":");
                    int end = currentLine.length();
                    int start = breakPoint + 1;
                    String Price = currentLine.substring(start,end);

价格将以(:)开头为+1或以(:)开头而不为+ 1,并以行长结束。

答案 3 :(得分:0)

我做了一些技巧,并用Button大声笑实现了这个头像; 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>

然后 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>

然后在 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());
        }
    }