android: Как добавить значки/рисунки в PagerTabStrip из Android Support Lib версии 4?

android: Как добавить значки/рисунки в PagerTabStrip из Android Support Lib версии 4?

Это очень специфический вопрос для людей, знакомых с PagerTabStrip, я нигде не смог найти достаточно примеров, он какой-то новый (The PagerTabStrip), поэтому я не смог найти достаточно информации.


person Shehabic    schedule 07.08.2012    source источник


Ответы (2)


Вы можете легко добавить значок/рисунок в PageTabStrip, используя SpannableString или SpannableStringBuilder.

Например, чтобы отобразить значок перед текстом:

Drawable myDrawable; //Drawable you want to display

@Override
public CharSequence getPageTitle(int position) {

    SpannableStringBuilder sb = new SpannableStringBuilder(" Page #"+ position); // space added before text for convenience

    myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight()); 
    ImageSpan span = new ImageSpan(myDrawable, ImageSpan.ALIGN_BASELINE); 
    sb.setSpan(span, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

    return sb;
}
person SteveR    schedule 11.10.2012
comment
что будет, если я захочу добавить его под строку. - person Vaibs; 18.03.2013
comment
@Vaibs Пожалуйста, поделитесь, если вам удалось добавить текст под значком. Спасибо. - person iuq; 15.01.2014
comment
Пожалуйста, отредактируйте свой ответ, чтобы установить myDrawable. Это работает хорошо. - person Sagar Devanga; 09.07.2015
comment
@SteveR Я хочу добавить изображение на вкладку «Заголовок» из URL-адреса. Любые подсказки? - person GreenROBO; 10.03.2016
comment
Это просто не работает для меня! Я использую Drawable drawable = ContextCompat.getDrawable(getActivity(), R.drawable.blah_icon); для загрузки моего Drawable, и используя точный код выше (который я видел и на других сайтах, кажется распространенным подходом), я только вижу текстовую часть в PagerTabStrip. Никогда не рисую. На самом деле не могу понять, почему, у всех остальных, кажется, нет проблем с этим... - person Matthew Housser; 12.03.2016
comment
Недостаток этого подхода, по-видимому, заключается в том, что изображение было представлено в виде строки (как бы говоря). Высота полосы не регулируется соответствующим образом, поэтому значок обрезается.... - person Johnny Wu; 28.10.2017
comment
@MatthewHousser, ты понял это? у меня та же проблема. Я использовал 30dp drawable, но не повезло. - person Ahsan; 24.08.2018

@MatthewHousser, если решение SteveR не работает, это может быть связано с тем, что вы установили фиксированный размер в PagerTabStrip в своем XML. Это то, что у меня было:

<android.support.v4.view.PagerTabStrip
        android:id="@+id/pager_tab_strip"
        android:layout_width="match_parent"
        android:layout_height="30dp">
</android.support.v4.view.PagerTabStrip>

Это то, что у меня есть сейчас:

<android.support.v4.view.PagerTabStrip
        android:id="@+id/pager_tab_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
</android.support.v4.view.PagerTabStrip>

В первом случае изображение не отображалось, а во втором отображается. Надеюсь, это поможет.

person Jack'    schedule 03.05.2016
comment
Я использую TabLayout и хочу отображать значки вместе с именами вкладок, такими как значки вкладок вверху и их текст внизу, для этого есть соответствующий поток stackoverflow.com/questions/31260384/ который следует за решением SteveR, но в моем случае он не работает, у меня уже установлена ​​высота tablayout как wrap_content, но он все еще не работает, поэтому не могли бы вы помочь? - person suv; 16.07.2019