0

アプリで Android アクションバー sherlock を使用しています。アクションバーをこのように見せたいです。

ここに画像の説明を入力

しかし、アクションバータブの背景色を変更すると、下線が消えます。

これが私のコードです。

<style name="MyTheme" parent="Theme.Sherlock.Light">
<!-- define text style for tabs -->
<item name="actionBarTabTextStyle">@style/MyTabTextStyle</item>
<item name="android:actionBarTabTextStyle">@style/MyTabTextStyle</item>

<item name = "actionBarStyle">@style/MyBarStyle</item>
<item name = "android:actionBarStyle">@style/MyBarStyle</item>

<item name = "actionBarTabStyle">@style/MyTabStyle</item>
<item name = "android:actionBarTabStyle">@style/MyTabStyle</item>

<item name = "actionBarTabBarStyle">@style/MyTabBarStyle</item>
<item name = "android:actionBarTabBarStyle">@style/MyTabBarStyle</item>


</style>

    <style name="MyTabTextStyle" parent="Widget.Sherlock.ActionBar.TabText" >
<item name="android:textColor">@color/tab_text_indicator</item>
<item name= "android:textSize">15dp</item>
<item name= "android:textStyle">normal</item>
</style>

    <style name="MyBarStyle" parent="Widget.Sherlock.ActionBar" >
   <item name="android:textSize">18dp</item>
   <item name="android:textStyle">normal</item>
   <item name="android:background">#669933</item>
    <item name="background">#669933</item>
    </style>
   
    <style name="MyTabStyle" parent="Widget.Sherlock.Light.ActionBar.TabView" >
   <item name="android:background">#ffffff</item>
    <item name="background">#ffffff</item> 
    </style>
   
    <style name="MyTabBarStyle" parent="Widget.Sherlock.ActionBar.TabBar" >
     <item name="android:showDividers">none</item>
   </style>

そして出力は

ここに画像の説明を入力

だから、私のアクションタブに下線を設定する方法がわかりません。助けてください..ありがとう。

4

2 に答える 2

0

GooglePlayStore アプリのようなタブナビゲーションを探しているならPagerTabStripViewPager簡単です。

これはあなたのための良い例ですAndroidSolution4U

このチュートリアルでは、次のコードで色を変更してタブをカスタマイズできます

 <android.support.v4.view.PagerTabStrip
    android:id="@+id/pager_title_strip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:background="#676966"
    android:paddingBottom="4dp"
    android:paddingTop="4dp"
    android:textColor="#6CBD57" />
于 2013-08-23T06:05:26.557 に答える
0

このコードを試してください:

  import android.view.View;
    import android.view.animation.AccelerateInterpolator;
    import android.view.animation.Animation;
    import android.view.animation.TranslateAnimation;
    import android.widget.TabHost;
    import android.widget.TabHost.OnTabChangeListener;

/**
 * A custom OnTabChangeListener that uses the TabHost its related to to fetch information about the current and previous
 * tabs. It uses this information to perform some custom animations that slide the tabs in and out from left and right.
 * 
 * @author Daniel Kvist
 * 
 */
public class AnimatedTabHostListener implements OnTabChangeListener
{

    private static final int ANIMATION_TIME = 240;
    private TabHost tabHost;
    private View previousView;
    private View currentView;
    private int currentTab;

    /**
     * Constructor that takes the TabHost as a parameter and sets previousView to the currentView at instantiation
     * 
     * @param tabHost
     */
    public AnimatedTabHostListener(TabHost tabHost)
    {
        this.tabHost = tabHost;
        this.previousView = tabHost.getCurrentView();
    }

    /**
     * When tabs change we fetch the current view that we are animating to and animate it and the previous view in the
     * appropriate directions.
     */
    @Override
    public void onTabChanged(String tabId)
    {

        currentView = tabHost.getCurrentView();
        if (tabHost.getCurrentTab() > currentTab)
        {
            previousView.setAnimation(outToLeftAnimation());
            currentView.setAnimation(inFromRightAnimation());
        }
        else
        {
            previousView.setAnimation(outToRightAnimation());
            currentView.setAnimation(inFromLeftAnimation());
        }
        previousView = currentView;
        currentTab = tabHost.getCurrentTab();

    }

    /**
     * Custom animation that animates in from right
     * 
     * @return Animation the Animation object
     */
    private Animation inFromRightAnimation()
    {
        Animation inFromRight = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
        return setProperties(inFromRight);
    }

    /**
     * Custom animation that animates out to the right
     * 
     * @return Animation the Animation object
     */
    private Animation outToRightAnimation()
    {
        Animation outToRight = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 1.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
        return setProperties(outToRight);
    }

    /**
     * Custom animation that animates in from left
     * 
     * @return Animation the Animation object
     */
    private Animation inFromLeftAnimation()
    {
        Animation inFromLeft = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
        return setProperties(inFromLeft);
    }

    /**
     * Custom animation that animates out to the left
     * 
     * @return Animation the Animation object
     */
    private Animation outToLeftAnimation()
    {
        Animation outtoLeft = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
        return setProperties(outtoLeft);
    }

    /**
     * Helper method that sets some common properties
     * @param animation the animation to give common properties
     * @return the animation with common properties
     */
    private Animation setProperties(Animation animation)
    {
        animation.setDuration(ANIMATION_TIME);
        animation.setInterpolator(new AccelerateInterpolator());
        return animation;
    }
}
于 2013-08-23T05:59:54.580 に答える