разрыв строки (\ n или br) с использованием элемента массива строк, игнорируемого html - PullRequest
1 голос
/ 04 марта 2020

РЕШЕННЫЙ код обновлен

, когда я пишу текст в редактируемом тексте для поиска в текстовом представлении, он выделяет конкретный текст в цвете, но разрывы строк исчезают, и все мои предложения появляются в одном предложении. И это Проблема появляется, когда я нажимаю кнопку поиска текста, который нужно выделить. Еще, прежде чем я нажимаю кнопку поиска, отображаются все разрывы строк. Помогите! upvote wait

// java code
 public void onClick(View v) {
//solved code here
                String textTOHighlight=etText.getText().toString();
                String originalText=textView.getText().toString();
                if(originalText.isEmpty()) return;
                String modifiedText=originalText.replaceAll("\n", "<br />").replaceAll(textTOHighlight, "<font color='red'>"+textTOHighlight+"</font>");
                textView.setText(Html.fromHtml(modifiedText),TextView.BufferType.SPANNABLE);

            }

// string code
<string-array name="chapters">
<item>This is \n first test<item>
<item>this is \n second test<item>
</string-array>
// activity
<EditText
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:id="@+id/et_text"
        android:hint="Enter text"
        android:padding="7dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/bg_round"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/search"
        android:text="Search"
        android:layout_marginTop="10dp"
        android:layout_marginStart="120dp"/>

    <TextView
        android:id="@+id/textv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="90dp"
        android:scrollbars="vertical"
        android:background="@drawable/bg_round"/>

// например, прежде чем я введите текст для поиска

"это первый тест"

// но после ввода текста для поиска он выделяет определенный текст, но показывает без новой строки

"это первый тест "

//all i did was on each button click go to specific chapter.By the way this portion has nothing to do.
 @Override
    public void onClick(View v) {
//solved code
        String text="";
        switch(v.getId()){
            case R.id.btn1 : {
                 text = getResources().getStringArray(R.array.chapters)[0].replaceAll("\n", "<br />");
                break;
            }
            case R.id.button1 : {
                text = getResources().getStringArray(R.array.chapters)[1].replaceAll("\n", "<br />");
                break;
            }
        }

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Новое редактирование

Попробуйте новое,

Используйте это как есть

// string code
<string-array name="chapters">
    <item>This is \n first test<item>
    <item>this is \n second test<item>
</string-array>

И,

@Override
public void onClick(View v) {
    String text="";
    switch(v.getId()){
        case R.id.btn1 : {
            text = getResources().getStringArray(R.array.chapters)[0].replaceAll("\n", "<br />"));
            break;
        }
        case R.id.button1 : {
            text = getResources().getStringArray(R.array.chapters)[1].replaceAll("\n", "<br />"));
            break;
        }
    }
}

Попробуйте этот пример кода

MainActivity. java

import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle SavedInstanceState) {
        super.onCreate(SavedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText edt = findViewById(R.id.edt);
        final TextView tv = findViewById(R.id.tv);
        Button btn = findViewById(R.id.btn);

        tv.setText(Html.fromHtml(getResources().getStringArray(R.array.chapters)[0].replaceAll("\n", "<br />")), TextView.BufferType.SPANNABLE);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String textTOHighlight = edt.getText().toString();
                String originalText = tv.getText().toString();

                if(originalText.isEmpty()) return;

                String modifiedText = originalText.replaceAll("\n", "<br />").replaceAll(textTOHighlight, "<font color='red'>" + textTOHighlight + "</font>");
                tv.setText(Html.fromHtml(modifiedText),TextView.BufferType.SPANNABLE);
            }
        });
    }
}

* Activity_main. xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/edt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="#ffffff"
        android:hint="Enter text"
        android:padding="7dp"
        android:textColor="#000000"
        android:textSize="16sp" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/edt"
        android:layout_marginTop="10dp"
        android:background="#C29090"
        android:text="Search" />

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/btn"
        android:layout_marginTop="90dp"
        android:background="#474747"
        android:scrollbars="vertical"
        android:textColor="#ffffff"
        android:textSize="16sp" />
</RelativeLayout>

строк. xml

 <resources>
     <string name="app_name">My Application</string>

     <string-array name="chapters">
        <item>This is \n first test</item>
        <item>this is \n second test</item>
    </string-array>
</resources>

Надеюсь, это сработает:)

0 голосов
/ 05 марта 2020

// первый вывод

This is <br /> first test

// Теперь, когда я ввожу текст для поиска, он отображается правильно

This is
first test

// Теперь, если я ввожу другой текст для поиска, он игнорирует разрыв строки снова

This is first test
// using this solved
Spanned htmlText = Html.fromHtml(text);
textView.setText(htmlText);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...