Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
zuxa-zuxa
Мишка Косолапый :)
282 / 252 / 86
Регистрация: 15.02.2012
Сообщений: 1,498
Завершенные тесты: 1
1

Изменение цвета текста на кнопках-заголовках TabLayout

26.03.2017, 19:56. Просмотров 732. Ответов 7
Метки нет (Все метки)

Разметка у меня такая:
XML
1
2
3
4
5
6
7
8
9
    <android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="scrollable" />
 
 
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
Использую так:
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
public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
 
    MyFragment[] fragments;
 
    public MyFragmentPagerAdapter(FragmentManager fm, MyFragment[] fragments) {
        super(fm);
        //.........
    }
 
    @Override
    public Fragment getItem(int position) {
        return fragments[position];
    }
 
    @Override
    public int getCount() {
        return fragments.length;
    }
 
    @Override
    public CharSequence getPageTitle(int position) {
        return String.valueOf(position + 1);
    }
}
Java
1
2
3
tabLayout.setupWithViewPager(viewPager);
        MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getFragmentManager(), data);
        viewPager.setAdapter(adapter);
Хотел, чтобы событие, возникающее на страничке viewPager меняло цвет заголовка выбранной странички.
Подскажите пожалуйста, как это сделать. Спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2017, 19:56
Ответы с готовыми решениями:

Изменение цвета текста, когда код цвета берется с сервера
Есть задание : Отправить на сервер название цвета, получить от сервера цвет в формате RGB и...

Изменение цвета текста
Здравствуйте. Глупая задача, но только начинаю разбираться с java И прохожу простые задачи, очень...

Программное изменение цвета текста button
Доброго времени суток всем! Возникла проблема: Необходимо, чтобы при нажатии на кнопку, она...

Изменение цвета текста в отдельной ячейке ListView
Здравствуйте! У меня такой вопрос: имеется ListView, на который также наложенo ContextMenu. Как мне...

Изменение цвета текста на кнопках
Здравствуйте. У меня тут вроде элементарное дело, но уже час туплю :wall: Есть Nое количество...

7
zuxa-zuxa
Мишка Косолапый :)
282 / 252 / 86
Регистрация: 15.02.2012
Сообщений: 1,498
Завершенные тесты: 1
28.03.2017, 08:13  [ТС] 2
Подниму тему, актуальна, спасибо
0
Pablito
2818 / 2240 / 756
Регистрация: 12.05.2014
Сообщений: 7,836
Завершенные тесты: 1
28.03.2017, 11:17 3
почему бы просто не менять цвета для текста табов?
Java
1
tabLayout.setTabTextColors(дефолтный_цвет, цвет_выделенного таба);
что-то случилось во фрагменте - он через слушатель вызывает метод в активити и там эта строчка
0
zuxa-zuxa
Мишка Косолапый :)
282 / 252 / 86
Регистрация: 15.02.2012
Сообщений: 1,498
Завершенные тесты: 1
28.03.2017, 16:36  [ТС] 4
Мне нужно красить те названия вкладок, на которых что то произошло, их будет несколько. А setTabTextColors задаёт текст для выбранной сейчас вкладки.
Мне нужно, к примеру, чтобы у вкладок 1, 2, 5 был обычный цвет, а 3 и 4 вкладки были с другим цветом.

Добавлено через 10 минут
Нашел вот такой способ:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    
                }
 
                @Override
                public void onTabUnselected(TabLayout.Tab tab) {
 
                }
 
                @Override
                public void onTabReselected(TabLayout.Tab tab) {
 
                }
            });
Но мне нужно менять состояние TabLayout.Tab в любой момент, а не при перелистывании вкладок.
Не могу понять как получить TabLayout.Tab выбранной страницы
0
demixdn
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
28.03.2017, 16:50 5
zuxa-zuxa, вставляйте туда кастомную вьюху и делайте с ней что хотите. До TextView, в которой содержится title можно добраться только разве что через рефлексию.

Добавлено через 8 минут
или попробуйте Spannable, не знаю, получится ли.
Java
1
2
3
4
TabLayout.Tab tab1 = tabLayout.getTabAt(0);
        SpannableString title = new SpannableString(tab1.getText());
        title.setSpan(new BackgroundColorSpan(0xFFFF0000),0,title.length()-1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
        tab1.setText(title);
1
Pablito
2818 / 2240 / 756
Регистрация: 12.05.2014
Сообщений: 7,836
Завершенные тесты: 1
28.03.2017, 17:03 6
кастомный TabLayout, естествнно в разметке использовать вместо стандартного
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
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;
import android.widget.TextView;
 
import java.util.Locale;
 
public class CustomTabLayout extends TabLayout {
 
    public CustomTabLayout(Context context) {
        super(context);
    }
 
    public CustomTabLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    @Override
    public void addTab(@NonNull Tab tab, int position, boolean setSelected) {
        tab.setCustomView(R.layout.tab_title_item);
        TextView textView = (TextView) tab.getCustomView();
        if (textView != null) {
            textView.setText(String.format(Locale.ROOT, "TAB %d", position));
        }
        super.addTab(tab, position, setSelected);
    }
 
    public void changeCurrentTabTitleColor(int pos, int color) {
        Tab tab = getTabAt(pos);
        if (tab != null) {
            TextView textView = (TextView) tab.getCustomView();
            if (textView != null) {
                textView.setTextColor(color);
            }
        }
    }
}
из адаптера убрать метод getPageTitle()...вообще убрать

разметка заголовка таба
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textAppearance="@style/TextAppearance.Design.Tab" />
потом я создал пару пустых фрагментов-заглушек для пейджера, там ничего особенного, оставил только то, что надо перенести себе
магия в интерфейсе
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class BlankFragment extends Fragment {
 
    private OnFragmentInteractionListener listener;
 
    public BlankFragment() {
        // Required empty public constructor
    }
 
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            listener = (OnFragmentInteractionListener) context;
        }
    }
 
    @Override
    public void onDetach() {
        super.onDetach();
        listener = null;
    }
}
Java
1
2
3
    interface OnFragmentInteractionListener {
        void onFragmentInteraction();
    }
и в активити
говорим implements OnFragmentInteractionListener
Java
1
2
3
4
    @Override
    public void onFragmentInteraction() {
        tabLayout.changeCurrentTabTitleColor(viewPager.getCurrentItem(), Color.CYAN);
    }
ну там свой цвет подставить
1
zuxa-zuxa
Мишка Косолапый :)
282 / 252 / 86
Регистрация: 15.02.2012
Сообщений: 1,498
Завершенные тесты: 1
28.03.2017, 19:52  [ТС] 7
Спасибо, но нашел простой способ!
tabLayout.getTabAt(position) - отдаёт TabLayout.Tab, а это уже нужная мне View, которую можно менять.
0
Pradip Tilala
-3 / 0 / 0
Регистрация: 11.01.2019
Сообщений: 1
11.01.2019, 12:35 8
This is useful android tutorial, How to change tablayout text color programmatically android:
Java
1
tabLayout.setTabTextColors(getResources().getColor(R.color.lime),getResources().getColor(R.color.colorAccent));
https://geekscompete.blogspot.com/20...matically.html
0
11.01.2019, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2019, 12:35

Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы
1. Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы. 2....

ContextMenu изменение цвета выбора и цвета текста
Добрый день подскажите как сделать так что бы после выбора пункта меню цвет текста менялся обратно...

Форматирование текста и изменение цвета текста в консоли
Подскажите пожалуйста, как форматировать текст в консоли, а также как менять его цвет


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru