2013-08-06 45 views
7

问题是以下问题:在我的一个活动中,我需要为我的操作栏定制布局,而唯一需要的方法是透明ActionBar在我的屏幕上。为此,我将ActionBar标记为叠加层,并将操作栏背景指定为透明。这在使用Android> = 15时有效,但在14和更低版本中,ActionBar保持其底部边界。我试图将其删除,但无济于事。覆盖时,ActionBar边框不会消失

这里是一幅画看得更清楚:

在API 14: ActionBar on API 14

在API 16: ActionBar on API 16

设计如下:操作栏应该是透明的并且处于叠加模式,并且在它后面有背景+徽标

<ImageView 
android:id="@+id/action_bar_background" 
android:layout_width="match_parent" 
android:layout_height="@dimen/action_bar_accueil_total_height" 
android:layout_alignParentTop="true" 
android:contentDescription="@string/action_bar" 
android:scaleType="fitXY" 
android:src="@drawable/actionbar_logo_extended" /> 

<ImageView 
android:id="@+id/home_gallica_logo" 
android:layout_width="@dimen/largeur_logo_carrousel" 
android:layout_height="@dimen/action_bar_accueil_total_height" 
android:layout_alignParentTop="true" 
android:layout_centerHorizontal="true" 
android:contentDescription="@string/action_bar" 
android:src="@drawable/logo_fullcolor" /> 

一些精度:我使用ABS,但这似乎不是问题的根源,因为切换到v7支持库完全是一回事。

有没有人有一个想法如何删除此底部边框?

+0

嗯,我想这是所有关于不同版本如何解释'.png'图片。你可以设置图像的背景像背景的渐变。我会寻找我的假设。 – g00dy

+0

事实是,ActionBar应该是透明的(并在叠加层中),以便在下面看到图像。 –

+0

好吧,让我问你这个问题,如何在API 16上部分水平线消失 - 是长(宽)的图像?而且我还注意到,在API 14上,您已经将徽标缩小了一倍,这会消失,但第二行是可见的。这让我想知道 - 你能否在这里粘贴资源,以便我可以看到它们 - 标识的图像(在平铺背景上,其大小),图像(gradient.xml或普通图像渐变) ActionBar +整个'xml'如果这不是问题? – g00dy

回答

3

继咨询和在评论中的Luksprog测试中,我在我的操作栏中为此页使用了Theme.Sherlock(而不是Theme.Sherlock.Light),并从我的旧主题中复制了我需要的设置。这似乎解决了这个问题,但我并不完全确定问题的根源。我可以给那些将要看到这个的人的唯一建议是使用Theme.Sherlock。

0

你可以通过调用hide()方法隐藏在操作栏:

ActionBar actionBar = getSupportActionBar(); 
actionBar.hide(); 

或者,如果你想永久隐藏它,你可以设置这个在您的清单:

<activity 
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
> 
+0

我不想完全隐藏我的动作栏,因为我仍然需要按钮。我只是想让它完全透明(在16+而不是之前)。 –

+0

@Valentin罗彻:你的意思是这样的:http://stackoverflow.com/questions/13726214/transparent-actionbar-custom-tabcolor –

+0

烨,但没有TESE解决方案做了工作,为这个确切的问题 –

3

我试图做一个simple activity来展示行为,但我没有设法做到这一点。我用了一个Activity,主题Theme.Sherlock

android:theme="@style/Theme.Sherlock 

,并且使覆盖(在onCreate()法):

requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); // Window from com.actionbarsherlock.view 
//... 
setContentView(content); 
ActionBar ab = getSupportActionBar(); 
ab.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));