如何在安卓的动态内容中选择特定行



我需要从数据库中的动态内容中选择特定行。在表的每一行中,很少有行以 <#c> 开头。我想选择并以<#c>开头的行居中。我正在使用SpannableString。我能够删除<#c>但所有文本都变得居中。

我的问题是我无法选择狭区线。在

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(( 采用内容中的所有字符,而不仅仅是<#c>包含的特定行。

如何获取包含<#c>的特定行的长度?

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>

使用上面的代码,表格行中的所有动态内容都变得"居中"。我需要将以<#c>开头的特定行居中。

你可以试试这个。

如果您的字符串以 <#c> 开头,那么如果部分将执行其他字符串将在 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);
}

相关内容

  • 没有找到相关文章

最新更新