【问题标题】:How to select a particular line in dynamic content in android如何在android中选择动态内容中的特定行
【发布时间】:2019-09-24 05:14:25
【问题描述】:

我需要从数据库中选择动态内容中的特定行。在表格的每一行中,有几行以 开头。我想选择以 开头的行并将其居中。我正在使用 SpannableString。我可以删除 但所有文本都居中。

我的问题是我无法选择特定线路。在

setSpan (Object what, int start, int end, int flags)

我将如何编写开始和结束字符?

我的问题是

int start and  int end

如何将 spannableString.length() 用于 int start 和 int end。

下面是内容。

 |<#c>aaaaaaa    |
 |bbbbbbbbbb     |
 |<#c>dddddddd   |
 |cccccccccc     |
 |jjjjjjjjjj     |
 |<#c>ffffffff   |
 |rrrrrrrrr      |
 |ggggggggggg    |

我在下面试试;

    TextView textView1 = ((TextView) rootView.findViewById(R.id.text2));
    String text1 = args.getString(ARG_OBJECT2);

    SpannableString spannableString;
    Object standard;
    if (text1.contains("<#c>")) {
        spannableString = new SpannableString(text1.replaceAll("<#c>", ""));
        standard = new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER);
        spannableString.setSpan(standard, 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        textView1.setText(spannableString);

    }

我检查了以下内容:

System.out.println("spannableString.length : " + spannableString.length());

结果是:

I/System.out: spannableString.length : 1763
I/System.out: spannableString.length : 537
I/System.out: spannableString.length : 931

spannableString.length() 获取内容中的所有字符,而不是仅获取 包含的特定行。

如何获取包含 的特定行的长度?

xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ScrlView"
        android:fillViewport="true"
        android:clickable="true"
        android:focusable="true"
        android:scrollbars="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/ll"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:width = "0dp"
                android:id="@+id/text2"
                android:textSize="20sp"
                android:textStyle="bold"
                android:textColor="@color/blue"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="2dp"
                android:layout_marginBottom="5dp"/>

        </LinearLayout>

    </ScrollView>

</RelativeLayout>

通过上面的代码,表格行中的所有动态内容都变得“居中”。我需要以 .

开头的特定行居中

【问题讨论】:

  • @Nilesh Rathod 旧问题是关于多种样式的,但现在的问题是如何选择行,这意味着如何使用 spannableString.length() 计算起始和结束字符。你能给我什么建议吗?实际上我无法解决我为什么要问的问题。

标签: java android styles spannablestring spannable


【解决方案1】:

你可以试试这个。

如果您的字符串以 开头,则 if 部分将执行 else 字符串将在 else 部分中按原样显示

TextView textView1 = ((TextView) rootView.findViewById(R.id.text2));
String text1 = args.getString(ARG_OBJECT2);

SpannableString spannableString;
Object standard;
if (text1.startsWith("<#c>")) {
  spannableString = new SpannableString(text1.replaceAll("<#c>", ""));
  standard = new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER);
  spannableString.setSpan(standard, 0, spannableString.length(), 
  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  textView1.setText(spannableString);
}else{
   textView1.setText(text1);
}

【讨论】:

  • 感谢您的支持。问题是一样的。所有文本都居中。我需要以 开头的特定行居中
  • 可能是你在 Textview 中添加了 android:gravity="center" ,删除后试试
  • android:gravity="center" 不在 Textview 中
  • 我添加了xml布局文件
  • 你的 xml 很好,通过使用它,以 开头的行居中对齐,其他行从左对齐。它对我有用,可能你的代码会有其他问题。
猜你喜欢
  • 2012-11-27
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2017-12-20
  • 2021-04-23
  • 2019-01-06
  • 1970-01-01
相关资源
最近更新 更多