使工具栏仅在一个活动/片段中透明化

时间:2016-05-10 18:02:58

标签: android

我需要我的工具栏是透明的,但只能在一个活动/片段中。 我知道这是做到这一点的方法:

toolbar.getBackground().setAlpha(0);

但它也会为其他片段更改工具栏。是否有替代或方法使其仅适用于一个片段。

这样我需要在每个活动/片段中设置工具栏的alpha。:

toolbar.getBackground().setAlpha(255);

这是唯一的方式还是?

此致

2 个答案:

答案 0 :(得分:0)

您可以使用主题:

<style name="my.ToolbarActivity" parent="base">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBarOverlay">false</item>
    <item name="windowActionModeOverlay">false</item>
</style>

<style name="my.ToolbarActivity.Overlay" parent="my.ToolbarActivity">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="windowActionModeOverlay">true</item>
</style>

<style name="my.ToolbarActivity.Overlay.Transparent" parent="my.ToolbarActivity.Overlay">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

然后在你的清单中:

 <activity
        android:name=".activity.TransparentActivity"
        android:theme="@style/my.ToolbarActivity.Overlay.Transparent"
        ....
  </activity
  <activity
        android:name=".activity.OverlayActivity"
        android:theme="@style/my.ToolbarActivity.Overlay"
        ...
  </activity>

答案 1 :(得分:0)

如果你的片段控制流在一个活动中是这样的,你有一个标准的开关片段函数定义如下,那么它非常明显 -

public void switchfragment(){
     switch(fragment_number){
         case 1:
            hideActionBar() ; // or hideToolbar() as u want
            return new Fragment1();
         case 2:
            showActionBar();  //or showtoolbar() as u want
            return new Fragment2();
}

}

我不会看到一个案例,你必须从单个片段中设置它,除非你试图从我通常避免的片段中切换片段。