จะเพิ่มรายการสัญลักษณ์แสดงหัวข้อย่อยลงในแอปพลิเคชัน Android ได้อย่างไร


92

ฉันตอบคำถามของฉันไปแล้วแต่ไม่มีคำตอบที่ได้ผล จะเพิ่มรายการสัญลักษณ์แสดงหัวข้อย่อยใน textview ของฉันได้อย่างไร

คำตอบ:


193

ยากที่จะทำตามที่ไม่รองรับ ul / li / ol โชคดีที่คุณสามารถใช้สิ่งนี้เป็นน้ำตาลซินแทติก:

&#8226; foo<br/>
&#8226; bar<br/>
&#8226; baz<br/>

&#8226;เป็นเอนทิตี html สำหรับสัญลักษณ์แสดงหัวข้อย่อยรายการตัวเลือกเพิ่มเติมอยู่ที่นี่http://www.elizabethcastro.com/html/extras/entities.html

เพิ่มเติมเกี่ยวกับแท็กที่ได้รับการสนับสนุนโดย Mark Murphy (@CommonsWare) http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html โหลดด้วย Html.fromHtml

((TextView)findViewById(R.id.my_text_view)).setText(Html.fromHtml(myHtmlString));

1
ขอบคุณสำหรับลิงค์ไปยังไซต์คอมมอนแวร์กำลังมองหาบางอย่างเช่นนั้นมาระยะหนึ่งแล้ว!
Norman H

4
โปรดทราบว่าหากคุณได้รับสตริงจากค่า / strings.xml (โดยใช้ context.getString (R.string.yourstring);) คุณจะต้องรวมไว้ในCDATA : <string name="string_name"><![CDATA[ &#8226; foo<br /> &#8226; bar... ]]></string>
Quentin S.

5
ไม่ได้ผลหากมีมากกว่าหนึ่งบรรทัดในรายการ
bulletpoint

ดูเหมือนว่าul/ liได้รับการสนับสนุนแล้วstackoverflow.com/questions/9754076/…
hmac

55
  1. browep อธิบายดีกว่า HTML โซลูชันที่ให้มาพร้อมกับเอนทิตี html จะมีประโยชน์ แต่รวมเฉพาะสัญลักษณ์แสดงหัวข้อย่อย หากข้อความของคุณปิดการเยื้องจะไม่ถูกต้อง

  2. ฉันพบโซลูชันอื่นที่ฝังมุมมองเว็บ นั่นอาจจะเหมาะสมสำหรับบางคน แต่ฉันคิดว่ามันเกินความจำเป็น ... (เช่นเดียวกับการใช้มุมมองรายการ)

  3. ฉันชอบแนวทางสร้างสรรค์ของ Nelson : D แต่ไม่ได้ให้คุณเพิ่มรายการที่ไม่เรียงลำดับลงในมุมมองข้อความได้

  4. ตัวอย่างรายการที่ไม่เรียงลำดับพร้อมสัญลักษณ์แสดงหัวข้อย่อยโดยใช้BulletSpan

    CharSequence t1 = getText(R.string.xxx1);
    SpannableString s1 = new SpannableString(t1);
    s1.setSpan(new BulletSpan(15), 0, t1.length(), 0);
    CharSequence t2 = getText(R.string.xxx2);
    SpannableString s2 = new SpannableString(t2);
    s2.setSpan(new BulletSpan(15), 0, t2.length(), 0);
    textView.setText(TextUtils.concat(s1, s2));
    

บวก:

  • สัญลักษณ์แสดงหัวข้อย่อยที่มีการเยื้องที่ถูกต้องหลังจากตัดข้อความ
  • คุณสามารถรวมข้อความที่จัดรูปแบบหรือไม่ได้จัดรูปแบบไว้ใน TextView หนึ่งอินสแตนซ์
  • คุณสามารถกำหนดในตัวสร้าง BulletSpan ว่าการเยื้องควรมีขนาดใหญ่เพียงใด

เชิงลบ:

  • คุณต้องบันทึกทุกรายการในทรัพยากรสตริงแยกกัน ดังนั้นคุณจึงไม่สามารถกำหนดรายการของคุณให้สะดวกสบายใน HTML ได้

1
วิธีนี้ (เลียนแบบมาเป๊ะ ๆ ) ใช้ไม่ได้กับ 2.2 คุณจบลงด้วยสัญลักษณ์แสดงหัวข้อย่อยเดียว
Skone

สวัสดี Skone มันใช้งานได้ในตัวจำลอง 2.2 และ Android เวอร์ชันดั้งเดิม ฉันเห็นเวอร์ชัน Android ที่ไม่สนใจช่องว่างระหว่างสัญลักษณ์แสดงหัวข้อย่อยกับข้อความ แต่กระสุนยังคงปรากฏอยู่ คุณมีบรรทัดใหม่ที่ส่วนท้ายของสัญลักษณ์แสดงหัวข้อย่อยหรือไม่?
Diego Frehner

วิธีนี้ใช้ไม่ได้เมื่อคุณเปลี่ยนระยะห่างระหว่างบรรทัดใน textview
Marqs

วิธีที่ยอดเยี่ยมในการใช้ BulletSpan ทำงานได้อย่างสมบูรณ์และง่ายมาก!
Moonbloom

7
โค้ดข้างบนใช้ได้เลย !!! สิ่งที่ฉันต้องทำคือเพิ่ม "\ n" ที่ท้ายทุกสตริงใน xml ....
Arhat Baid

38

ฉันพบทางเลือกอื่น .. เพียงคัดลอกสัญลักษณ์แสดงหัวข้อย่อย "•" (เป็นข้อความ) และวางในข้อความของมุมมองข้อความของคุณคุณสามารถเปลี่ยนสีสัญลักษณ์แสดงหัวข้อย่อยได้โดยการเปลี่ยนสีข้อความและคุณลักษณะอื่น ๆ ทั้งหมดเช่นขนาดความกว้างความสูง .. :)

คุณสามารถใช้ทางลัดเพื่อรับสัญลักษณ์แสดงหัวข้อย่อยนี้ขณะพิมพ์

สำหรับ windows

ALT + 7

สำหรับ mac

ALT + 8


2
Alt + 7 ใช้ไม่ได้สำหรับฉัน (อาจเป็นเพียง mac หรือ linux เท่านั้น) แต่การคัดลอกและวางอักขระ Unicode •ใช้งานได้
จอน

2
FYI: ALT + 7 จะทำงานก็ต่อเมื่อแป้นพิมพ์มีตัวเลขแยกต่างหาก
Aks4125

หากคุณวางสัญลักษณ์ลงในโค้ดเช่นในสตริงโปรดคำนึงถึงปัญหาเกี่ยวกับอักขระที่ไม่ใช่ ascii และการเข้ารหัสไฟล์ (ลองเปลี่ยนการเข้ารหัสของไฟล์จากมุมล่างขวาของ IntelliJ) ดีกว่าคือใช้ลำดับการหลีกเลี่ยงที่เกี่ยวข้อง (เช่น \ u1234)
Gil Vegliach

สุดยอด !! ชีวิตอันธพาล!
goonerDroid

2
\ u2022 คือคำตอบ
user2322082

21

ได้รับแรงบันดาลใจจากคำตอบต่างๆที่นี่ฉันจึงสร้างคลาสยูทิลิตี้เพื่อให้เป็นซับที่ง่าย สิ่งนี้จะสร้างรายการสัญลักษณ์แสดงหัวข้อย่อยที่มีการเยื้องสำหรับข้อความที่ห่อไว้ มีวิธีการรวมสตริงทรัพยากรสตริงและทรัพยากรสตริงอาร์เรย์

มันจะสร้าง CharSequence ซึ่งคุณสามารถส่งผ่านไปยัง TextView ตัวอย่างเช่น:

CharSequence bulletedList = BulletListUtil.makeBulletList("First line", "Second line", "Really long third line that will wrap and indent properly.");
textView.setText(bulletedList);

หวังว่าจะเป็นประโยชน์ สนุก.

หมายเหตุ: จะใช้สัญลักษณ์แสดงหัวข้อย่อยมาตรฐานของระบบวงกลมเล็ก ๆ ที่มีสีเดียวกับข้อความ หากคุณต้องการสัญลักษณ์แสดงหัวข้อย่อยที่กำหนดเองให้พิจารณาคลาสย่อยของBulletSpanและแทนที่drawLeadingMargin()เพื่อวาดสัญลักษณ์แสดงหัวข้อย่อยที่คุณต้องการ ลองดูที่แหล่ง BulletSpanเพื่อดูวิธีการทำงาน

public class BulletTextUtil {

/**
 * Returns a CharSequence containing a bulleted and properly indented list.
 *
 * @param leadingMargin In pixels, the space between the left edge of the bullet and the left edge of the text.
 * @param context
 * @param stringArrayResId A resource id pointing to a string array. Each string will be a separate line/bullet-point.
 * @return
 */
public static CharSequence makeBulletListFromStringArrayResource(int leadingMargin, Context context, int stringArrayResId) {
    return makeBulletList(leadingMargin, context.getResources().getStringArray(stringArrayResId));
}

/**
 * Returns a CharSequence containing a bulleted and properly indented list.
 *
 * @param leadingMargin In pixels, the space between the left edge of the bullet and the left edge of the text.
 * @param context
 * @param linesResIds An array of string resource ids. Each string will be a separate line/bullet-point.
 * @return
 */
public static CharSequence makeBulletListFromStringResources(int leadingMargin, Context context, int... linesResIds) {
    int len = linesResIds.length;
    CharSequence[] cslines = new CharSequence[len];
    for (int i = 0; i < len; i++) {
        cslines[i] = context.getString(linesResIds[i]);
    }
    return makeBulletList(leadingMargin, cslines);
}

/**
 * Returns a CharSequence containing a bulleted and properly indented list.
 *
 * @param leadingMargin In pixels, the space between the left edge of the bullet and the left edge of the text.
 * @param lines An array of CharSequences. Each CharSequences will be a separate line/bullet-point.
 * @return
 */
public static CharSequence makeBulletList(int leadingMargin, CharSequence... lines) {
    SpannableStringBuilder sb = new SpannableStringBuilder();
    for (int i = 0; i < lines.length; i++) {
        CharSequence line = lines[i] + (i < lines.length-1 ? "\n" : "");
        Spannable spannable = new SpannableString(line);
        spannable.setSpan(new BulletSpan(leadingMargin), 0, spannable.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        sb.append(spannable);
    }
    return sb;
}

}

ขอบคุณที่รัก! ฉันใช้ฟังก์ชั่น makeBulletList แล้วมันใช้งานได้เหมือนมีเสน่ห์: D
Aba

มันเจ๋งมาก! ขอบคุณ)
kulikovman

10

นี่เป็นวิธีที่ง่ายที่สุด ..

<string name="bullet_ed_list">\n\u2022 He has been Chairman of CFL Manufacturers Committee of ELCOMA, the All India Association of Lighting Equipment Manufacturers.
\n\u2022 He has been the President of Federation of Industries of India (FII).</string>

1
สิ่งนี้ไม่ได้ตัดไปที่การเยื้องอย่างถูกต้องใช่ไหม? (เช่นบรรทัดถัดไปจะพันอยู่ใต้สัญลักษณ์แสดงหัวข้อย่อย)
nivekmai

8

ส่วนขยาย Kotlin พร้อมใช้งาน

fun List<String>.toBulletedList(): CharSequence {
    return SpannableString(this.joinToString("\n")).apply {
        this@toBulletedList.foldIndexed(0) { index, acc, span ->
            val end = acc + span.length + if (index != this@toBulletedList.size - 1) 1 else 0
            this.setSpan(BulletSpan(16), acc, end, 0)
            end
        }
    }
}

การใช้งาน:

val bulletedList = listOf("One", "Two", "Three").toBulletedList()
label.text = bulletedList

สีและขนาด:

ในการเปลี่ยนสีหรือขนาดสัญลักษณ์แสดงหัวข้อย่อยให้ใช้ CustomBulletSpan แทน BulletSpan

package com.fbs.archBase.ui.spans

import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.text.Layout
import android.text.Spanned
import android.text.style.LeadingMarginSpan
import androidx.annotation.ColorInt

class CustomBulletSpan(
        private val bulletRadius: Int = STANDARD_BULLET_RADIUS,
        private val gapWidth: Int = STANDARD_GAP_WIDTH,
        @ColorInt private val circleColor: Int = STANDARD_COLOR
) : LeadingMarginSpan {

    private companion object {
        val STANDARD_BULLET_RADIUS = Screen.dp(2)
        val STANDARD_GAP_WIDTH = Screen.dp(8)
        const val STANDARD_COLOR = Color.BLACK
    }

    private val circlePaint = Paint().apply {
    color = circleColor
        style = Paint.Style.FILL
        isAntiAlias = true
    }

    override fun getLeadingMargin(first: Boolean): Int {
        return 2 * bulletRadius + gapWidth
    }

    override fun drawLeadingMargin(
            canvas: Canvas, paint: Paint, x: Int, dir: Int,
            top: Int, baseline: Int, bottom: Int,
            text: CharSequence, start: Int, end: Int,
            first: Boolean,
            layout: Layout?
    ) {
        if ((text as Spanned).getSpanStart(this) == start) {
            val yPosition = (top + bottom) / 2f
            val xPosition = (x + dir * bulletRadius).toFloat()

            canvas.drawCircle(xPosition, yPosition, bulletRadius.toFloat(), circlePaint)
        }
    }
}

คุณสามารถเปลี่ยนขนาดของสัญลักษณ์แสดงหัวข้อย่อยให้ตรงกับขนาดข้อความได้หรือไม่?
nenur

@NoahTanenholtz คุณสามารถเพิ่มขนาดกระสุนได้โดยเปลี่ยนค่าอาร์กิวเมนต์ BulletSpan ()
Mikhail Sharin

โอ้ฉันคิดว่านั่นคือระยะห่าง
nenur

เพิ่มระยะห่างแทนขนาดกระสุน):
Sumit Shukla

@SumitShukla ขอบคุณสำหรับความคิดเห็น ฉันเพิ่งเพิ่ม BulletCustomSpan สำหรับการปรับแต่งสีและขนาด
Mikhail Sharin

4

ตัวเลือกที่ฉันใช้คือตั้งค่าสัญลักษณ์แสดงหัวข้อย่อยที่วาดได้โดยใช้สไตล์

<style name="Text.Bullet">
    <item name="android:background">@drawable/bullet</item>
    <item name="android:paddingLeft">10dp</item>
</style>

การใช้งาน:

<TextView android:id="@+id/tx_hdr" 
android:text="Item 1" style="@style/Text.Bullet" />

ฉันเพิ่งคว้ารูปกระสุนขนาดเล็กจากเว็บเพื่อวาดได้ เค้าโครงกราฟิกใน Eclipse แสดงกราฟิกที่ขยายออกมาใต้ข้อความ ... ค่อนข้างไกลจากที่ฉันต้องการ
JohnK

1
ฉันคิดว่าเขาหมายถึงandroid:drawableLeft=
Blundell

4

ใช้ TextView แบบง่ายพร้อมสารประกอบที่วาดได้ ตัวอย่างเช่น

<TextView     
    android:text="Sample text"
    android:drawableLeft="@drawable/bulletimage" >
</TextView>

3

นี่เป็นวิธีแก้ปัญหาอีกวิธีหนึ่งไม่ใช่การเพิ่มรายการลงใน textview เดียว แต่ฉันเดาว่าเป้าหมายเหมือนกัน มันใช้ TableLayout ซึ่งต้องการเพียง XML และมันง่ายมากสำหรับรายการสั่งซื้อขนาดเล็กหรือไม่เรียงลำดับ ด้านล่างนี้เป็นโค้ดตัวอย่างที่ฉันใช้สำหรับสิ่งนี้ไม่ใช่โค้ดบรรทัดใน Java

บวก:

  • คุณสามารถใส่อะไรก็ได้ที่คุณต้องการในแถวตารางไม่จำเป็นต้องเป็น textview
  • คุณสามารถใช้เพื่อสร้างรายการสัญลักษณ์แสดงหัวข้อย่อยและลำดับเลขหรืออะไรก็ได้
  • คุณสามารถกำหนดการเยื้องโดยใช้ช่องว่างภายในหรือโครงร่าง

เชิงลบ:

  • น่าเบื่อสำหรับรายการที่ยาวมาก (เว้นแต่คุณจะใช้โปรแกรมแก้ไขข้อความที่มีฝีมือกับ regex)
  • ทุกรายการจะถูกจัดเก็บเป็นทรัพยากรสตริงแยกกัน

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
    
            >
    
            <TextView
                style="@style/helpPagePointsStyle"
                android:layout_weight="0.2"
                android:text="1." />
    
            <TextView
                style="@style/helpPagePointsStyle"
                android:layout_weight="3"
                android:text="@string/help_points1" />
        </TableRow>
    
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
            <TextView
                style="@style/helpPagePointsStyle"
                android:layout_weight="0.2"
                android:text="2." />
    
            <TextView
                style="@style/helpPagePointsStyle"
                android:layout_weight="3"
                android:text="@string/help_points2" />
        </TableRow>
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
            <TextView
                style="@style/helpPagePointsStyle"
                android:layout_weight="0.2"
                android:text="3." />
            <TextView
                style="@style/helpPagePointsStyle"
                android:layout_weight="3"
                android:text="@string/help_points3" />
        </TableRow>
    
    
    </TableLayout>
    

และสไตล์:

<style name="helpPagePointsStyle">
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:gravity">left</item>
</style>

2

นี่คือรายการสัญลักษณ์แสดงหัวข้อย่อยที่มีส่วนหัวและแท็บด้านหน้าของแต่ละรายการ

public class BulletListBuilder {

    private static final String SPACE = " ";
    private static final String BULLET_SYMBOL = "&#8226";
    private static final String EOL = System.getProperty("line.separator");
    private static final String TAB = "\t";

    private BulletListBuilder() {

    }

    public static String getBulletList(String header, String []items) {
        StringBuilder listBuilder = new StringBuilder();
        if (header != null && !header.isEmpty()) {
            listBuilder.append(header + EOL + EOL);
        }
        if (items != null && items.length != 0) {
            for (String item : items) {
                Spanned formattedItem = Html.fromHtml(BULLET_SYMBOL + SPACE + item);
                listBuilder.append(TAB + formattedItem + EOL);
            }
        }
        return listBuilder.toString();
    }

}

2

ใช้งานมากเกินไปและสร้างมุมมองข้อความที่กำหนดเอง

ใช้แบบนี้:

<com.blundell.BulletTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="--bullet 1 --bullet two --bullet three --bullet four" />

และรหัส:

package com.blundell;

import android.content.Context;
import android.text.Html;
import android.util.AttributeSet;
import android.widget.TextView;

public class BulletTextView extends TextView {
    private static final String SPLITTER_CHAR = "--";
    private static final String NEWLINE_CHAR = "<br/>";
    private static final String HTML_BULLETPOINT = "&#8226;";

    public BulletTextView(Context context, AttributeSet attrs) {
        this(context, attrs, android.R.attr.textViewStyle);
    }

    public BulletTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        checkForBulletPointSplitter();
    }

    private void checkForBulletPointSplitter() {
        String text = (String) getText();
        if (text.contains(SPLITTER_CHAR)) {
            injectBulletPoints(text);
        }
    }

    private void injectBulletPoints(String text) {
        String newLinedText = addNewLinesBetweenBullets(text);
        String htmlBulletText = addBulletPoints(newLinedText);
        setText(Html.fromHtml(htmlBulletText));
    }

    private String addNewLinesBetweenBullets(String text) {
        String newLinedText = text.replace(SPLITTER_CHAR, NEWLINE_CHAR + SPLITTER_CHAR);
        newLinedText = newLinedText.replaceFirst(NEWLINE_CHAR, "");
        return newLinedText;
    }

    private String addBulletPoints(String newLinedText) {
        return newLinedText.replace(SPLITTER_CHAR, HTML_BULLETPOINT);
    }

}

เราจะเพิ่มขนาดและระยะห่างของสัญลักษณ์แสดงหัวข้อย่อยได้อย่างไร
Sumit Shukla

ตัวอย่างนี้ใช้&#8226;คุณจะต้องเลือกสัญลักษณ์อื่นfsymbols.com/signs/bullet-point
Blundell

2

รายการสัญลักษณ์แสดงหัวข้อย่อยสามารถสร้างได้ง่ายๆโดยใช้<ul>และ<li>แท็กในทรัพยากรสตริง

อย่าใช้ setText (Html.fromHtml (string))เพื่อตั้งค่าสตริงในโค้ด! เพียงตั้งค่าสตริงตามปกติใน xml หรือโดยใช้ setText ( สตริง )

เช่น:

ไฟล์ strings.xml

<string name="str1">
    <ul>
        <li><i>first</i> item</li>
        <li>item 2</li>
    </ul>
</string>


layout.xml ไฟล์

<TextView
    android:text="@string/str1"
/>


มันจะให้ผลลัพธ์ดังต่อไปนี้:

  • รายการแรก
  • ข้อ 2


แท็กต่อไปนี้ได้รับการสนับสนุนเช่นนี้ (ฝังโดยตรงในทรัพยากรสตริง):

  • <a> (รองรับแอตทริบิวต์ "href")
  • <คำอธิบายประกอบ>
  • เ <b>
  • <big>
  • <font> (รองรับแอตทริบิวต์ "height" "size" "fgcolor" และ "bicolor" เป็นจำนวนเต็ม)
  • <i>
  • <li>
  • <marquee>
  • <small>
  • <strike>
  • <sub>
  • <sup>
  • <tt>
  • <u>

คุณไม่ต้องการ<ul>
Blundell

5
ไม่ทำงาน, ไม่เป็นผล. แท็ก html ที่รองรับคือ <b>, <i> และ <u> เท่านั้น developer.android.com/guide/topics/resources/…
Wooff

ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน! สิ่งเดียวที่ฉันต้องทำเพื่อให้ทุกอย่างเป็นไปได้คือ\ nที่จุดเริ่มต้นของแต่ละบรรทัด เช่น\n<ul><li>a</li> \n<li>b</li> \n<li>c</li></ul>
Jack T

1

ฉันพบว่านี่เป็นวิธีที่ง่ายที่สุดให้ปล่อย textView ไว้ตามที่อยู่ในไฟล์ xml และใช้รหัส java ต่อไปนี้ มันทำงานได้ดีอย่างสมบูรณ์สำหรับฉัน

private static final String BULLET_SYMBOL = "&#8226";

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tutorial);

    TextView tv = (TextView) findViewById(R.id.yourTextView);

    tv.setText("To perform this exercise you will need the following: "
                        + System.getProperty("line.separator")//this takes you to the next Line
                        + System.getProperty("line.separator")
                        + Html.fromHtml(BULLET_SYMBOL + " Bed")
                        + System.getProperty("line.separator")
                        + Html.fromHtml(BULLET_SYMBOL + " Pillow"));
}

1

สำหรับsingle line textคุณสามารถใช้ drawables:

<TextView
    android:id="@+id/txtData"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableStart="@drawable/draw_bullet_list"
    android:drawablePadding="@dimen/padding_8dp"
    android:text="Hello"
    android:textColor="@color/colorBlack" />

draw_bullet_list.xml :

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

    <size
        android:width="12dp"
        android:height="12dp" />

</shape>

คุณสามารถเปลี่ยนshape, size, colorขึ้นอยู่กับความต้องการของคุณ


0

สองตัวเลือกที่คุณมีสำหรับการทำรายการสัญลักษณ์แสดงหัวข้อย่อยคือ

  • สร้างรายการโดยใช้ html (ul, ol) และโหลด html ลงใน WebView
  • โหลดข้อมูลลงใน ListView และตั้งค่าทางซ้ายของมุมมองข้อความของคุณในเค้าโครงรายการเป็นรูปภาพที่เหมาะสมสำหรับสัญลักษณ์แสดงหัวข้อย่อย

ทางเลือกที่ 1 ง่ายที่สุด



0

ถ้าคุณต้องการสร้าง bullet list ที่มีโครงสร้าง editText

ฉันได้รับประโยชน์จากการอ้างอิงนี้

คุณสามารถใช้สัญลักษณ์แสดงหัวข้อย่อยนี้

           EditText  edtNoteContent = findViewById(R.id.editText_description_note);            

        edtNoteContent.addTextChangedListener(new TextWatcher(){
            @Override
            public void afterTextChanged(Editable e) {

            }
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

            }
            @Override
            public void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter)
            {
                if (lengthAfter > lengthBefore) {
                    if (text.toString().length() == 1) {
                        text = "◎ " + text;
                        edtNoteContent.setText(text);
                        edtNoteContent.setSelection(edtNoteContent.getText().length());
                    }
                    if (text.toString().endsWith("\n")) {
                        text = text.toString().replace("\n", "\n◎ ");
                        text = text.toString().replace("◎ ◎", "◎");
                        edtNoteContent.setText(text);
                        edtNoteContent.setSelection(edtNoteContent.getText().length());
                    }
                }
            }
        });
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.