Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中选择动态内容中的特定行_Java_Android_Styles_Spannablestring_Spannable - Fatal编程技术网

Java 如何在android中选择动态内容中的特定行

Java 如何在android中选择动态内容中的特定行,java,android,styles,spannablestring,spannable,Java,Android,Styles,Spannablestring,Spannable,我需要从数据库中选择动态内容中的特定行。在表的每一行中,很少有行以开头。我想选择以开始的线并将其居中。我用的是SpannableString。我可以删除,但所有文本都居中 我的问题是我无法选择巴黎线。在 setSpan (Object what, int start, int end, int flags) 我将如何编写开始字符和结束字符 我的问题出在 int start and int end 如何对int start和int end使用spannableString.length()

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

我的问题是我无法选择巴黎线。在

setSpan (Object what, int start, int end, int flags)
我将如何编写开始字符和结束字符

我的问题出在

int start and  int end
如何对int start和int end使用spannableString.length()

下面是类似的内容

 |<#c>aaaaaaa    |
 |bbbbbbbbbb     |
 |<#c>dddddddd   |
 |cccccccccc     |
 |jjjjjjjjjj     |
 |<#c>ffffffff   |
 |rrrrrrrrr      |
 |ggggggggggg    |
结果是:

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>

使用上述代码,表行中的所有动态内容都将变为“居中”。我需要将以开头的特定线条居中。

你可以试试这个

如果字符串以开头,则If part将执行else,字符串将显示为else part中的字符串

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 textView1=((TextView)rootView.findViewById(R.id.text2));
String text1=args.getString(ARG_OBJECT2);
SpannableString SpannableString;
对象标准;
if(text1.startsWith(“”){
spannableString=新的spannableString(text1.replaceAll(“,”);
标准=新路线span.standard(布局.路线.居中对齐);
spannableString.setSpan(标准,0,spannableString.length(),
Spannable.SPAN_独占性SPAN_独占性);
textView1.setText(spannableString);
}否则{
textView1.setText(text1);
}

@Nilesh Rathod以前的问题是关于多种样式,但现在的问题是如何选择行,这意味着如何使用spannableString.length()计算起始字符和结束字符。你能给我一些建议吗?事实上,我无法解决我为什么要问的问题。谢谢你的支持。问题是一样的。所有文本都居中。我需要将以开头的特定行居中,可能是您在文本视图中添加了android:gravity=“center”,请在删除该android:gravity=“center”不在文本视图中后重试我添加的xml布局文件您的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>
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);
}