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

Изменения цвета ссылки - Android

Восстановить пароль Регистрация
 
Truwa
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 37
15.11.2016, 21:24     Изменения цвета ссылки #1
Объявление ссылки:
Java
1
Linkify.addLinks(holder.info, Linkify.ALL);
как мне сделать что бы при клике на неё у нее менялся цвет на заданный мною? Событие setOnClickListener не помогает, ссылка просто открывается, а цвет меняется только если рядом тыкнуть
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2016, 21:24     Изменения цвета ссылки
Посмотрите здесь:

Android смена цвета
Изменение цвета Android
Android Изменение цвета текста
Изменение цвета заголовка Android
Изменение цвета ActionBar Android
Android Ошибка изменения TextView
Коды цвета Android
Android Как подобрать цвета

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
15.11.2016, 21:36     Изменения цвета ссылки #2
setOnTouchListener

Добавлено через 3 минуты
как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent e) {
                switch (e.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        button.setBackgroundColor(Color.parseColor("#0D7BD3"));
                        break;
                    case MotionEvent.ACTION_UP:
                        button.setBackgroundColor(Color.parseColor("#2196f3"));
                        break;
                }
                return true;
            }
        });
Добавлено через 2 минуты
В твоём случае цвет текста.
Truwa
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 37
15.11.2016, 22:16  [ТС]     Изменения цвета ссылки #3
ExFau$t,
Перестали работать ссылки и за один клик почему то выделяется несколько
Кликните здесь для просмотра всего текста
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
package truwaproduct.fndcms;
 
import android.app.*;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.text.util.Linkify;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
 
import java.util.ArrayList;
 
public class RecyclerAdapter extends RecyclerView.Adapter <RecyclerAdapter.ViewHolder> {
    TextView info;
    ArrayList<String> posts;
    private final Typeface typeface;
 
    public RecyclerAdapter(ArrayList<String> posts, Context context) {
        this.posts = posts;
        typeface = Typeface.createFromAsset(context.getAssets(), "fonts/YaL.otf");
    }
 
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_child, parent, false));
 
 
    }
 
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.info.setText(posts.get(position));
        Linkify.addLinks(holder.info, Linkify.ALL);
    }
 
 
    @Override
    public int getItemCount() {
        return posts.size();
    }
 
 
    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView info;
 
        public ViewHolder(View itemView) {
            super(itemView);
            info = (TextView) itemView.findViewById(R.id.info_text);
            info.setTypeface(typeface);
            info.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent e) {
                    switch (e.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            info.setLinkTextColor(Color.BLACK);
                            break;
                        case MotionEvent.ACTION_UP:
                            info.setLinkTextColor(Color.BLACK);
                            break;
                    }
                    return true;
                }
            });
 
 
        }
 
    }
}

Полный код

Добавлено через 6 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
public ViewHolder(View itemView) {
            super(itemView);
            info = (TextView) itemView.findViewById(R.id.info_text);
            info.setTypeface(typeface);
            info.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                info.setLinkTextColor(Color.BLACK);
                }
            });
        }
    }
решил проблему таким образом. Но ссылок за один клик выделяется несколько, в чем проблема?
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
16.11.2016, 09:51     Изменения цвета ссылки #4
Проблема в том, что ты опять воткнул листенер в адаптер. У тебя там есть OnItemClickListener или типо того из прошлой темы, вот и сделай вместо него OnItemTouchListener, где в MotionEvent.ACTION_DOWN ты меняешь цвет, а в MotionEvent.ACTION_UP возвращаешь цвет и выполняешь код, что был для нажатия.
Yandex
Объявления
16.11.2016, 09:51     Изменения цвета ссылки
Ответ Создать тему
Опции темы

Текущее время: 00:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru