С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Spannable - цветной текст - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Приложение по публикации фото http://www.cyberforum.ru/android-dev/thread1734354.html
Здравствуйте, я, пока что, не программист на андроид. Однако мы создаем сайт, на котором пользователи будут публиковать фото. Для этого хотим сделать приложение, которое может делать только одну...
Программирование Android Запись массива в TextView Есть двумерный массив: int a в нём записаны "0" и "1" Я хочу вывести его на экран, но выводится только один "0". ... TextView table; ... String aa = ""; aa+=(a + "\n"); http://www.cyberforum.ru/android-dev/thread1734236.html
Читаются ли контакты с Viber Программирование Android
Есть контент провайдер content://com.viber.provider.vibercontacts но ясно без пермишена не работает, есть ли пермишен в интернете или они "защищают )" данные пользователя и доступа к контактам нет?
Программирование Android Открытие apk в андроид студио
Каким способом можно открыть apk в программе? просто надо проверить антивирус, а он засекает только тест файл apk при его запуске.
Программирование Android Ошибка с использованием нескольких Activity http://www.cyberforum.ru/android-dev/thread1734160.html
Здравствуйте, недавно только начал программировать на android и столкнулся с такой проблемой - вроде-бы делаю все по официальному гайду, но код не работает. Главный активити: public class...
Программирование Android Создание app-release.apk для публикации в маркете В общем, все сделал по документации. Android Studio сообщает о том, что apk был успешно собран и предлагает мне перейти в соответствующую папку. Я перехожу туда, а там нет подписанного apk файла. Там... подробнее

Показать сообщение отдельно
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
20.05.2016, 16:22
я тут немного подняпрягся и сделал кастомный EditText, на мой взгляд это удобнее чем городить все методы где-то в активити или фрагменте
1. сам класс, можно особо не вчитываться, магия уже настроена
Кликните здесь для просмотра всего текста
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
import android.content.Context;
import android.text.Editable;
import android.text.Spannable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.style.BackgroundColorSpan;
import android.util.AttributeSet;
import android.widget.EditText;
 
import java.util.ArrayList;
 
public class CustomEditText extends EditText {
 
    private final ArrayList<Integer> posList = new ArrayList<>();
    private String highlightText;
    private int color;
 
    public CustomEditText(Context context) {
        super(context);
        init();
    }
 
    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
 
    private void init() {
        addTextChangedListener(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();
                if (s.length() > 0 && !TextUtils.isEmpty(highlightText)) {
                    findOccurrences();
                }
                if (!posList.isEmpty()) highlight(s);
            }
        });
    }
 
    private void findOccurrences() {
        String text = getText().toString();
        int index = text.indexOf(highlightText);
        while (index >= 0) {
            posList.add(index);
            index = text.indexOf(highlightText, index + 1);
        }
    }
 
    private void highlight(Spannable where) {
        for (Integer pos : posList) {
            int spanStart = pos;
            int spanEnd = spanStart + highlightText.length();
            where.setSpan(new BackgroundColorSpan(color), spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
 
    public void setHighlightText(String highlightText, int color) {
        this.highlightText = highlightText;
        this.color = color;
    }
}

2. кусок активити, где показано как это вызывается
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        CustomEditText editText = (CustomEditText) findViewById(R.id.editText);
        editText.setHighlightText("hello", Color.RED);
    }
}

3. пример разметки, там где указан кастомный EditText надо будет поменять имя пакета на свое
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/topAppContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <com.example.mytestapplication.CustomEditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
 
</FrameLayout>

4. PROFIT
Spannable - цветной текст
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.