Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Поиск как в браузере - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Непонятка с разметкой http://www.cyberforum.ru/android-dev/thread1725953.html
Имею почему-то 0 вместо слова Аватар. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"...
Программирование Android MediaPlayer переключение Добрый день. Реализую переключение музыкальных файлов. Есть код. Всё просто. Одна кнопка - один трек. Всего два трека - две кнопки. Первый раз, всё успешно проигрывается, но при повторных нажатиях,... http://www.cyberforum.ru/android-dev/thread1725944.html
Программирование Android Recyclerview при onLongItemClick срабатывает и onItemClick?
использую такой класс для клика по айтемам: нажимаю долгий клик открывается контекстменю а так же происходит обычный клих на этом айтеме, в чем может быть дело, помогите пожалуйста? ...
Обновление данных Программирование Android
Добрый день. Еще такая проблема возникла. Есть форма где нужно редактировать информацию, ввел нужные коррективы и нажал кнопку сохранить оно обновляет ее в базе. А вот когда нажимаю кнопку...
Программирование Android Ошибка minSDK(API 23, N preview) != deviceSDK(API 17) http://www.cyberforum.ru/android-dev/thread1725858.html
Недавно начал учить андроид и возникла такая ошибка, когда я пытаюсь запустить проект на своем телефоне или эмуляторе. При этом в проекте выставлено "minSdkVersion 15". Режим отладки включен,...
Программирование Android Форматирование строки, полученной из БД Доброго времени суток! Сразу скажу, что пытался найти, как выполнить форматирование строки, но нашел только способ, когда в Strings создается строка. И к ней вроде как автоматически уже понимается... подробнее

Показать сообщение отдельно
Pablito
2505 / 1989 / 619
Регистрация: 12.05.2014
Сообщений: 6,943
Завершенные тесты: 1
02.05.2016, 19:47
мне стало интересно и я накидал простой примерчик
работает поиск и кнопки - next/prev
пока что не знаю как сделать по-человечески автоматическую прокрутку текста если его много, но думаю что для начала и так сойдет

минимально необходимый код в активити
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.example.mytestapplication;
 
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextWatcher;
import android.text.style.BackgroundColorSpan;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
 
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class MainActivity extends AppCompatActivity {
 
    private final ArrayList<Integer> posList = new ArrayList<>();
    private int current;
    private TextView tv;
    private BackgroundColorSpan colorSpan;
    private EditText et;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        colorSpan = new BackgroundColorSpan(ContextCompat.getColor(this, R.color.colorAccent));
        tv = (TextView) findViewById(R.id.textView);
        findViewById(R.id.nextButton).setOnClickListener(btnClickListener);
        findViewById(R.id.prevButton).setOnClickListener(btnClickListener);
        et = (EditText) findViewById(R.id.editText);
        et.addTextChangedListener(textWatcher);
    }
 
    private final View.OnClickListener btnClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.nextButton) current++;
            else current--;
            if (current < 0) current = posList.size() - 1;
            else if (current >= posList.size()) current = 0;
            findOccurrence();
        }
    };
 
    private final TextWatcher textWatcher = new TextWatcher() {
 
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
 
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
 
        @Override
        public void afterTextChanged(Editable s) {
            posList.clear();
            Pattern p = Pattern.compile(s.toString());
            Matcher m = p.matcher(tv.getText().toString());
            while (m.find()) posList.add(m.start());
            current = 0;
            findOccurrence();
        }
    };
 
    private void findOccurrence() {
        String where = tv.getText().toString();
        if (posList.isEmpty()) {
            tv.setText(where);
        } else {
            Spannable selectSpan = new SpannableString(where);
            int spanStart = posList.get(current);
            int spanEnd = spanStart + et.getText().toString().length();
            selectSpan.setSpan(colorSpan, spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            tv.setText(selectSpan);
        }
    }
}

разметка на которой тренировался
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="16dp">
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
 
        <EditText
            android:id="@+id/editText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
 
        <Button
            android:id="@+id/prevButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Prev" />
 
        <Button
            android:id="@+id/nextButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Next" />
 
    </LinearLayout>
 
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/dummy_text"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />
 
</LinearLayout>

"@string/dummy_text" - любой длинный текст
Поиск как в браузере
если клацать кнопки next/prev то будет искать вхождения "по кругу"
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru