Android - настройка вкладок Шерлока на панели действий

Я пытаюсь настроить вкладки Шерлока на панели действий, чтобы они отображали текст вкладки под значком вкладки. После поиска и чтения по этому вопросу мне все еще не повезло.

Вот результаты, которые я получаю:

Выбрана пользовательская вкладка 1 Selected

Пользовательская вкладка 1 не выбрана, выбрана стандартная вкладка 2 Not selected

Вот что я сделал на данный момент:

Создал собственные стили.xml, где я изменяю некоторые настройки панели действий:

<style name="SkoletubeTheme" parent="Theme.Sherlock">
    <item name="actionBarSize">@dimen/st__action_bar_default_height</item>
    <item name="actionBarTabStyle">@style/Skoletube.TabView</item>
    <item name="actionBarTabTextStyle">@style/Skoletube.Tab.Text</item>
</style>

<style name="Skoletube.TabView" parent="Widget.Sherlock.ActionBar.TabView">
    <item name="android:background">@drawable/abs__tab_indicator_holo</item>
    <item name="android:paddingLeft">6dp</item>
    <item name="android:paddingRight">6dp</item>
</style>

<style name="Skoletube.Tab.Text" parent="Widget.Sherlock.ActionBar.TabText">
    <item name="android:textAppearance">@android:style/TextAppearance.Medium</item>
    <item name="android:textColor">@android:color/primary_text_dark</item>
    <item name="android:textSize">10sp</item>
</style>

Создан ресурс xml, в котором я изменяю и перезаписываю некоторые настройки текста для панели действий. Здесь я увеличил высоту панели действий, что, в свою очередь, увеличивает высоту вкладок. Я также уменьшил размер текста, чтобы освободить место для значка и текста на вкладке

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Default height of an action bar. -->
<dimen name="st__action_bar_default_height">58dip</dimen>
<!-- Text size for action bar titles -->
<dimen name="ab__action_bar_title_text_size">10dp</dimen>
<!-- Text size for action bar subtitles -->
<dimen name="ab__action_bar_subtitle_text_size">6dp</dimen>
<!-- Top margin for action bar subtitles -->
<dimen name="ab__action_bar_subtitle_top_margin">-3dp</dimen>
<!-- Bottom margin for action bar subtitles -->
<dimen name="ab__action_bar_subtitle_bottom_margin">5dip</dimen>
</resources>

. Затем я определил пользовательский макет для использования вкладок, в котором я размещаю текст под значком:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/customTabLayout"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_weight="1"
android:focusable="true"
android:gravity="center"
style="?attr/actionBarTabStyle"
>
<ImageView
    android:id="@+id/sk_abs__tab_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:background="@android:color/transparent"
    />
<com.actionbarsherlock.internal.widget.ScrollingTextView
    android:id="@+id/sk_abs__tab_txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/sk_abs__tab_icon"
    android:layout_alignWithParentIfMissing="true"
    android:layout_weight="1"
    android:layout_centerHorizontal="true"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    style="@style/Skoletube.Tab.Text"
    />
<FrameLayout
    android:id="@+id/abs__tab_custom"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:padding="5dip"
    android:layout_weight="1"
    android:visibility="gone"
    />

Просто для записи атрибут, переданный как стиль для относительного макета, указывает на это:

<style name="Widget.Sherlock.ActionBar.TabBar" parent="android:Widget"></style>

Затем я применил эти изменения к своему приложению следующим образом: первая вкладка имеет мою настраиваемую реализацию, вторая вкладка имеет стандартную реализацию:

final ActionBar actionBar;
    actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayUseLogoEnabled(true);
    // Set up tabs

    myMediaTab = actionBar.newTab();
    myMediaTab.setCustomView(R.layout.skoletube_tab_layout);
    ImageView myMediaImg = (ImageView) myMediaTab.getCustomView().findViewById(R.id.sk_abs__tab_icon);
    myMediaImg.setImageResource(R.drawable.tab_mymedia);
    ScrollingTextView myMediaText = (ScrollingTextView) myMediaTab.getCustomView().findViewById(R.id.sk_abs__tab_txt);
    myMediaText.setText("Tab1");
    myMediaTab.setTabListener(this);
    myMediaTab.setTag("MyMediaTab");
    actionBar.addTab(myMediaTab);

    myChannelsTab = actionBar.newTab();
    myChannelsTab.setIcon(drawable.tab_mychannels);
    myChannelsTab.setText("Tab2");
    myChannelsTab.setTabListener(this);
    myChannelsTab.setTag("myChannelsTab");
    actionBar.addTab(myChannelsTab);

Хотя я думаю, что близок к решению, я думаю, что где-то пропустил шаг.

Очевидно, синей полосы за текстом/под изображением не должно быть, но я также, похоже, не нашел, где можно установить сфокусированное изображение (я хочу, чтобы img менял цвет при выборе вкладки ) и цвет текста. Нужно ли мне сфокусировать изображение и обрабатывать его через это или?

Я все еще довольно новичок в этом, поэтому подход, который я использовал здесь, может быть неверным, если есть лучший/умный способ сделать это, пожалуйста, скажите.

Будем признательны за любые предложения и идеи.

15
задан Line 24 March 2012 в 20:25
поделиться