【问题标题】:Toolbar/Nav drawer not working with tabbed view工具栏/导航抽屉不适用于选项卡式视图
【发布时间】:2016-07-23 02:37:08
【问题描述】:

我在让我的工具栏和导航抽屉显示在新的布局文件上时遇到问题。它适用于整个应用程序,除了新的选项卡式布局视图。

我尝试在新java类的onCreate中激活它:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.workout_days);

    mToolBar = activateToolbar();
    setUpNavigationDrawer();

我不再收到错误消息,但工具栏仍未显示。我想知道是不是我的布局文件有问题。

基础活动:

public static final int HOME = 1;
public static final int MY_WORKOUT = 2;
public static final int MAXES = 3;
public static final int PROGRESS = 4;
public static final int WORKOUTS = 5;
public static final int HELP = 6;

private Class mNextActivity;

public static String mTitle = AppConstant.SHIEKO_WORKOUT;

public static int mType = HOME;

protected Toolbar mToolBar;

private NavigationDrawerFragment mDrawerFragment;

protected Toolbar activateToolbar() {
    if(mToolBar == null) {
        mToolBar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(mToolBar);
        switch (mType) {
            case HOME:
                getSupportActionBar().setTitle(AppConstant.SHIEKO_WORKOUT);
                break;
            case MY_WORKOUT:
                getSupportActionBar().setTitle(AppConstant.MY_WORKOUT);
                break;
            case MAXES:
                getSupportActionBar().setTitle(AppConstant.SET_MY_MAXES);
                break;
            case PROGRESS:
                getSupportActionBar().setTitle(AppConstant.MY_PROGRESS);
                break;
            case WORKOUTS:
                getSupportActionBar().setTitle(AppConstant.WORKOUTS);
                break;
            case HELP:
                getSupportActionBar().setTitle(AppConstant.FEEDBACK);
        }
    }
    return mToolBar;
}

这是我的活动:我还有 3 个用于 3 个选项卡的其他片段 xml 页面,这些页面不包括工具栏或导航栏,因为我的理解是它们位于 tabview 下方。如果我错了,请纠正我请..

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

    <!--<RelativeLayout-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="match_parent">-->

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="0dp">

    <include android:id="@+id/app_bar"
             layout="@layout/toolbar" />


    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <!--</RelativeLayout>-->

    <fragment
        android:name="com.bestworkouts.sheikoworkout.NavigationDrawerFragment"
        android:id="@+id/fragment_navigation_drawer"
        tools:layout="@layout/fragment_navigation_drawer"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>

提前致谢!

【问题讨论】:

  • findViewById(R.id.app_bar) 已返回空值。请检查是否存在于您的 XML 布局中
  • 它在里面,但我把它移到了另一个地方。现在我没有收到错误,并且选项卡视图位于工具栏应位于的下方,但它仍然没有显示:(
  • 你可以editminimal reproducible example,好吗?很难说这两个 sn-ps 代码是如何交互的
  • 我对 android 还很陌生,很遗憾,无法制作一个最小、完整、可验证的示例,但我用我的 xml 布局代码更新了主帖。我有 3 个仅包含 FrameLayout 和 Textview 的其他片段布局,但我认为它们不需要
  • 开始工作了!耶!我不得不将

标签: android navigation-drawer toolbar


【解决方案1】:

你的布局应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout>

    <android.support.design.widget.CoordinatorLayout>
        <android.support.design.widget.AppBarLayout>
            <android.support.v7.widget.Toolbar/>
        </android.support.design.widget.AppBarLayout>

        <ViewPager>
    </android.support.design.widget.CoordinatorLayout>

    <!-- Slider Menu -->
    <android.support.design.widget.NavigationView/>
</android.support.v4.widget.DrawerLayout>

顺便说一句,不需要调用getSupportActionBar().setTitle(AppConstant.WORKOUTS),你可以调用setTitle()来设置actionBar的标题。

【讨论】:

  • 我的 BaseActivity 扩展了 AppCompatActivity,然后我的新类扩展了 BaseActivity.. 感谢您提供有关设置标题的提示!
  • 更新了 xml 布局的新代码,如果您需要其他任何内容,请告诉我。每个选项卡有3个选项卡布局片段,但它们只包含一个框架布局和textview
猜你喜欢
相关资源
最近更新 更多
热门标签