自定义操作栏会停止我的应用

时间:2016-07-18 16:36:32

标签: java android android-actionbar ide

我想使用自定义操作栏,所以我在我的应用程序中设置了自定义操作栏,但是当我无法运行app.app强制停止时。 我在res / layout中创建一个工具栏并禁用默认操作栏,然后在MainActivity中设置自定义操作栏。 这是我的toolbar.xml:

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- This is a centered logo -->
    <ImageView
        android:id="@+id/toolbar_logo"
        android:src="@drawable/icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="?attr/actionBarSize"
        android:layout_marginTop="4dp"
        android:layout_marginLeft="16dp"
        android:layout_marginBottom="4dp"
        android:layout_gravity="left" />
    <!-- This is a centered title -->
    <TextView
        android:id="@+id/toolbar_title"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="?attr/actionBarSize"
        android:layout_gravity="center"
        android:gravity="center_vertical"
        android:visibility="gone"
        android:text="@string/app_name"
        android:textColor="@color/colorWhite"
      style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
        />
</FrameLayout>

这是我的MainActivity:

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

    Toolbar tb = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(tb);

    final ActionBar ab = getSupportActionBar();
    ab.setHomeAsUpIndicator(R.drawable.ic_menu); 
    ab.setDisplayShowHomeEnabled(true); 
    ab.setDisplayHomeAsUpEnabled(true);
    ab.setDisplayShowCustomEnabled(true); 
    ab.setDisplayShowTitleEnabled(false); 

我该如何解决?

1 个答案:

答案 0 :(得分:0)

将来,当您的应用崩溃后发布错误的堆栈跟踪,以便我们可以获得更多信息,我们可以帮助您更好地解决错误。我在这里看到的这个问题是xml中的工具栏元素在FrameLayout之外,请记住每个xml文件最多只能有一个根元素。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto "
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

    <!-- This is a centered logo -->
    <ImageView
        android:id="@+id/toolbar_logo"
        android:src="@drawable/icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="?attr/actionBarSize"
        android:layout_marginTop="4dp"
        android:layout_marginLeft="16dp"
        android:layout_marginBottom="4dp"
        android:layout_gravity="left" />
    <!-- This is a centered title -->
    <TextView
        android:id="@+id/toolbar_title"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="?attr/actionBarSize"
        android:layout_gravity="center"
        android:gravity="center_vertical"
        android:visibility="gone"
        android:text="@string/app_name"
        android:textColor="@color/colorWhite"
      style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
        />
</FrameLayout>

您可能还想查看其他ViewGroup来排列xml中的元素,例如CoordinatorLayout和LinearLayout。