我在哪里可以定义Android 5.0中工具栏小部件的XML?

好的,现在我已经经历了几个StackOverflowpost,但是我仍然对这个工具栏的xml的位置感到困惑。

<android.support.v7.widget.Toolbar android:id=”@+id/my_awesome_toolbar” android:layout_height=”wrap_content” android:layout_width=”match_parent” android:background=”@styles/colorPrimary” /> 

它在我的/layout/activity_main.xml

Solutions Collecting From Web of "我在哪里可以定义Android 5.0中工具栏小部件的XML?"

工具栏是在应用程序布局中使用的动作条的一般化,现在回答你的问题有两种做法:

不好的做法:

不好的做法是在每个布局中定义工具栏。

标准做法:

标准做法是定义一个布局并在一个基本活动中引用它。 您只需要将此工具栏布局包含在您想要的任何布局中(通过使用<include> ),并将已定义的基本活动扩展到任何活动中。

这个标准的做法将帮助您保持工具栏的单一代码库,并节省您每次定义工具栏的时间。

示例:Google I / O 2014 Android应用程序

toolbar_actionbar_with_headerbar.xml

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:iosched="http://schemas.android.com/apk/res-auto" style="@style/HeaderBar" iosched:theme="@style/ActionBarThemeOverlay" iosched:popupTheme="@style/ActionBarPopupThemeOverlay" android:id="@+id/toolbar_actionbar" iosched:titleTextAppearance="@style/ActionBar.TitleText" iosched:contentInsetStart="?actionBarInsetStart" android:layout_width="match_parent" android:layout_height="?actionBarSize" /> 

此设置活动中引用了此工具栏布局,如下所示:

activity_settings.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".ui.SettingsActivity"> <include layout="@layout/toolbar_actionbar_with_headerbar" /> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> 

至于我,我通常做一个ToolbarActivity。 接下来,如果你想要你的活动有一个工具栏,你只需要YourActivity extends ToolbarActivity

 public class ToolbarActivity extends AppCompatActivity { @Override public void setContentView(int layoutResID) { super.setContentView(R.layout.activity_toolbar); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); LayoutInflater inflater = LayoutInflater.from(this); View contentView = inflater.inflate(layoutResID, null); LinearLayout layout = (LinearLayout) findViewById(R.id.layout); layout.addView(contentView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } } 

XML:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/layout" tools:context=".ToolbarActivity" > <android.support.v7.widget.Toolbar android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" android:id="@+id/toolbar" /> </LinearLayout>