source

텍스트 보기에서 글머리 기호를 추가하려면 어떻게 해야 합니까?

goodcode 2023. 8. 24. 23:05
반응형

텍스트 보기에서 글머리 기호를 추가하려면 어떻게 해야 합니까?

TextView가 있는데 XML을 통해 글에 글머리 기호를 추가하고 싶은데 가능한가요?

이 효과를 얻으려면 올바른 문자 인코딩을 사용해야 합니다.로 시도해 볼 수 있습니다.•


갱신하다

Just to clarify: use `setText("\u2022 Bullet");` to add the bullet programmatically. `0x2022 = 8226`

이것은 저에게 효과가 있었습니다.

<string name="text_with_bullet">Text with a \u2022</string>

복사 붙여넣기: •.저는 ◄, ►와 같은 이상한 캐릭터들과 함께 했습니다.

편집: 예를 들어 보겠습니다.더투Button맨 아래에 있는 것은android:text="◄"그리고."►".

프롤리가 어딘가에서 더 나은 해결책을 찾았지만, 이것이 제가 한 일입니다.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <TableRow>    
            <TextView
                android:layout_column="1"
                android:text="•"></TextView>
            <TextView
                android:layout_column="2"
                android:layout_width="wrap_content"
                android:text="First line"></TextView>
        </TableRow>
        <TableRow>    
            <TextView
                android:layout_column="1"
                android:text="•"></TextView>
            <TextView
                android:layout_column="2"
                android:layout_width="wrap_content"
                android:text="Second line"></TextView>
        </TableRow>
  </TableLayout>

원하는 대로 작동하지만 해결 방법이 있습니다.

Android 문서에 설명된 대로 BulletSpan을 사용할 수 있습니다.

SpannableString string = new SpannableString("Text with\nBullet point");
string.setSpan(new BulletSpan(40, color, 20), 10, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

Result

텍스트 보기에서 글머리 기호를 추가하는 또 다른 가장 좋은 방법은 두 단계 아래에 나와 있습니다.

먼저 그리기 가능한 항목을 만듭니다.

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

    <!--set color of the bullet-->
   <solid 
       android:color="#666666"/> //set color of bullet

    <!--set size of the bullet-->
   <size 
       android:width="120dp"
        android:height="120dp"/>
</shape>

그런 다음 텍스트 뷰에 이 그리기 테이블을 추가하고 아래 속성을 사용하여 페딩을 설정합니다.

android:drawableStart="@drawable/bullet"
android:drawablePadding="10dp"

이렇게 해서 저는 하게 되었습니다.

 <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <View
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@drawable/circle"
                android:drawableStart="@drawable/ic_bullet_point" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="Your text"
                android:textColor="#000000"
                android:textSize="14sp" />
        </LinearLayout>

그리고 drawbale/drawbale.xml의 코드는

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:innerRadius="0dp"
  android:shape="ring"
  android:thickness="5dp"
  android:useLevel="false">

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

</shape>

유니코드를 사용하면 쉽게 할 수 있지만, 글머리 기호의 색상을 바꾸고 싶다면 컬러 글머리 기호 이미지로 시도하여 다음과 같이 설정했습니다.drawableStart그리고 그것은 성공하였다.

<TextView     
    android:text="Hello bullet"
    android:drawableStart="@drawable/bulleticon" >
</TextView>

안드로이드는 지원하지 않기 때문에<ol>, <ul> or <li>HTML 요소, 나는 이렇게 해야만 했습니다.

<string name="names"><![CDATA[<p><h2>List of Names:</h2></p><p>&#8226;name1<br />&#8226;name2<br /></p>]]></string>

사용자 지정 공간을 유지하려면 다음을 사용합니다.</pre> tag

(계속) 모든 옵션은 다음을 사용하는 것입니다.html꼬리표

텍스트 보기에 의 텍스트만 있는 경우 그리기 표를 사용할 수 있습니다.

다음과 같은 것:

<TextView
            android:id="@+id/tv_with_bullet"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            app:drawableStartCompat="@drawable/ic_desired_bullet_icon" />

그리고 SVG에서 원하는 글머리 기호를 추가합니다. 문자 그대로 공간이 필요하지 않고 복잡한 추가 작업이 필요하지 않습니다.string literals또한 여기에서 글머리 기호에 대한 SVG 파일을 다운로드할 수 있습니다.

나는 코틀린에서 이 확장 함수를 만듭니다.

fun TextView.addBulletPoints(bulletSymbol: Char = '•') {
    //•‣⁃∙◎◦⦾⦿
    val lines = text?.split("\n") ?: emptyList()
    val builder = SpannableStringBuilder()

    for (line in lines) {
        builder.append("$bulletSymbol ")
        builder.append(line.trim())
        builder.append("\n")
    }

    text = builder
}

또는 대체 API 24 상위

fun TextView.addBulletPoints(bulletGapWidth: Int = 32, bulletRadius: Int = 12, color: Int = currentTextColor) {
    val lines = text?.split("\n") ?: emptyList()
    val builder = SpannableStringBuilder()

    for (line in lines) {
        val start = builder.length
        builder.append(line.trim())
        builder.setSpan(BulletSpan(bulletGapWidth, color, bulletRadius), start, builder.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        builder.append("\n")
    }

    text = builder
}

언급URL : https://stackoverflow.com/questions/3429546/how-do-i-add-a-bullet-symbol-in-textview

반응형