185

我有一个 TextView,我想通过 XML 在我的文本中添加一个项目符号。是否可以?

4

10 回答 10

422

您必须使用正确的字符编码来实现此效果。你可以试试•


更新

只是为了澄清:用于setText("\u2022 Bullet");以编程方式添加项目符号。0x2022 = 8226

于 2010-08-07T07:56:17.683 回答
71

这对我有用:

<string name="text_with_bullet">Text with a \u2022</string>
于 2013-07-29T23:59:07.100 回答
30

复制粘贴: •。我用其他奇怪的字符完成了它,例如◄和►。

编辑: 是一个例子。Button底部的两个s 有android:text="◄""►"

于 2010-08-07T12:02:39.583 回答
19

Prolly 在某个地方有一个更好的解决方案,但这就是我所做的。

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

它可以按您的意愿工作,但确实是一种解决方法。

于 2010-10-17T22:53:00.833 回答
11

您可以按照 Android 文档中的说明尝试BulletSpan 。

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

结果

于 2019-03-14T17:51:43.723 回答
6

这就是我最终这样做的方式。

 <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/circle.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>
于 2016-09-21T12:06:43.967 回答
5

使用 Unicode 我们可以很容易地做到这一点,但是如果想改变项目符号的颜色,我尝试使用彩色项目符号图像并将其设置为可绘制的左侧并且它有效

<TextView     
    android:text="Hello bullet"
    android:drawableLeft="@drawable/bulleticon" >
</TextView>
于 2016-07-06T08:10:29.040 回答
4

在任何文本视图中添加项目符号的另一种最佳方法如下两个步骤所述:

首先,创建一个drawable

<?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>

然后在textview中添加这个drawable并使用下面的属性设置它的pedding

android:drawableStart="@drawable/bullet"
android:drawablePadding="10dp"
于 2020-07-25T12:10:46.730 回答
0

由于android不支持<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

于 2016-11-16T12:03:34.513 回答
0

(几乎)所有选项都是关于使用html标签的。

如果 TextView只有一行文本,您可以使用可绘制对象。

像这样的东西:

<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 文件以获取要点

于 2021-10-05T08:36:17.423 回答