Android工具栏无法显示

时间:2015-05-01 03:08:28

标签: java android android-layout toolbar

目前我正在使用Android的新工具栏(在appcompat中)。它运行正常,直到我尝试以下方法:std::vector<std::vector<T> > array(42); 。当我调用它时,工具栏会消失。我的布局:

toolbar.bringToFront()

现在我需要它的原因是<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:orientation="vertical" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="56dp" android:background="@color/colorPrimary" app:theme="@style/ToolbarTheme" app:popupTheme="@style/ToolbarThemePopup" /> <com.asdev.sechat.SlidingTabLayout android:id="@+id/sliding_tabs" android:background="@color/colorPrimary" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="fill_parent" /> 有一个覆盖工具栏的阴影,我不希望这样。任何人都知道如何将工具栏置于顶部并仍然可见它?感谢。

2 个答案:

答案 0 :(得分:1)

来自文档:

  

更改树中视图的z顺序,因此它位于其他同级视图之上。如果父容器使用依赖于顺序的布局方案(例如,LinearLayout),则该排序改变可能影响布局。在KITKAT之前,此方法之后应该在视图的父级上调用requestLayout()和invalidate(),以强制父级使用新的子级顺序重绘。

https://developer.android.com/reference/android/view/View.html#bringToFront()

这会弄乱您的布局。您可能需要查看相对布局或找到一种不同的方法来摆脱阴影。或者,如果你是最小的sdk 21,你可以手动设置工具栏上的高程。

relativelayout示例:

<RelativeLayout         
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">


<com.asdev.sechat.SlidingTabLayout
    android:id="@+id/sliding_tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/toolbar"
    android:background="@color/colorPrimary" />

<android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_below="@id/sliding_tabs" />

<android.support.v7.widget.Toolbar
    android:id="@id/toolbar"
    android:layout_width="match_parent"
    android:align_parentTop="true"
    android:layout_height="56dp"
    android:background="@color/colorPrimary"
    app:popupTheme="@style/ToolbarThemePopup"
    app:theme="@style/ToolbarTheme" />


</RelativeLayout>

答案 1 :(得分:0)

在java文件中使用bringToFront工具栏将解决您的问题。

修改

这是我的应用中的有效解决方案

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        app:popupTheme="@style/Theme.AppCompat.Light.DarkActionBar"
        app:theme="@style/Toolbar" />

    <com.asdev.sechat.SlidingTabLayout
        android:id="@+id/sliding_tabs"
        android:layout_width="match_parent"
        android:layout_height="@dimen/tab_height"
        android:background="@color/primaryColor"
        android:minHeight="@dimen/tab_height"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>