1,主题Theme
在Android中,主题(Theme)是一种用于定义应用程序用户界面外观的样式。主题可以包括颜色、字体、布局、控件样式等属性。通过使用主题,开发者可以轻松地为应用程序创建一致且具有吸引力的用户界面。

要使用主题,首先需要在AndroidManifest.xml文件中为应用程序指定一个主题:

<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme">...</application>

在上面的示例中,我们将应用程序的主题设置为AppTheme。接下来,我们需要在项目的res/values/styles.xml文件中定义这个主题:

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style></resources>

在上面的代码中,我们定义了一个名为AppTheme的主题,它继承自Theme.AppCompat.Light.DarkActionBar。这意味着我们的应用程序将使用浅色背景和深色操作栏。我们还可以通过添加自定义属性来进一步自定义主题,例如:

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="android:textColor">@color/textColor</item></style></resources>

在上面的代码中,我们添加了一个名为android:textColor的属性,它将应用于应用程序中的所有文本控件。要在布局文件中使用这个属性,只需将其作为控件的样式引用即可:

<TextViewstyle="@style/TextAppearance.AppCompat.Body1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" />

在上面的代码中,我们将TextAppearance.AppCompat.Body1样式应用于TextView控件,这将应用我们在主题中定义的android:textColor属性。

2,ToolBar使用说明

在Android中,Toolbar是一个应用程序界面的导航控件,它提供了一种显示标题和操作按钮的方式,并且可以在不同的屏幕方向上自适应。Toolbar可以放置在布局的顶部或底部,并可以包含菜单项、子标题和搜索框等元素。

以下是如何在布局文件中添加Toolbar的示例:

<androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:popupTheme="@style/AppTheme.PopupOverlay" />

然后,你可以通过以下方式在Activity中使用Toolbar:

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

你还可以设置Toolbar的背景颜色、标题和子标题以及它们的颜色:

toolbar.setBackgroundColor(Color.parseColor("#5C6BC0"));getSupportActionBar().setTitle("标题"); // 设置标题getSupportActionBar().setSubtitle("子标题"); // 设置子标题getSupportActionBar().setTitleTextColor(Color.parseColor("#EC407A")); // 设置标题颜色getSupportActionBar().setSubtitleTextColor(Color.parseColor("#FFFFFF")); // 设置子标题颜色

3,toolbar里带图标的menu参考
在Android中,要在Toolbar里添加带图标的Menu,可以参考以下代码:

首先,在布局文件(如activity_main.xml)中添加一个Toolbar和一个Menu:

<androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:popupTheme="@style/AppTheme.PopupOverlay"><MenuViewandroid:id="@+id/menu_view"android:layout_width="wrap_content"android:layout_height="wrap_content" /></androidx.appcompat.widget.Toolbar>

然后,在Activity(如MainActivity.java)中找到这两个组件,并为Menu设置菜单项:

import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private Toolbar toolbar;private Menu menu;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取Toolbar和Menu组件toolbar = findViewById(R.id.toolbar);menu = toolbar.getMenu();// 为Menu设置菜单项MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.menu_main, menu);}// 重写onOptionsItemSelected方法,处理菜单项点击事件@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.menu_item1:Toast.makeText(this, "菜单项1被点击", Toast.LENGTH_SHORT).show();break;case R.id.menu_item2:Toast.makeText(this, "菜单项2被点击", Toast.LENGTH_SHORT).show();break;default:return super.onOptionsItemSelected(item);}return true;}}

最后,在资源文件夹(如res/menu)下创建一个名为menu_main.xml的文件,定义带图标的菜单项:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/menu_item1"android:icon="@drawable/ic_menu_item1"android:title="菜单项1" /><itemandroid:id="@+id/menu_item2"android:icon="@drawable/ic_menu_item2"android:title="菜单项2" /></menu>

注意:请将@drawable/ic_menu_item1和@drawable/ic_menu_item2替换为实际的图标资源ID。

在Android中,showAsAction属性用于指定菜单项(MenuItem)在Toolbar中的显示方式。它有两个可选值:

never(默认值):菜单项不会显示在Toolbar上,而是显示在下拉菜单中。
ifRoom:如果Toolbar有足够的空间,菜单项会显示在Toolbar上;否则,它会显示在下拉菜单中。
例如,在menu资源文件中为一个菜单项设置showAsAction属性:

<itemandroid:id="@+id/action_search"android:icon="@drawable/ic_search"android:title="搜索"app:showAsAction="ifRoom" />

在这个例子中,当Toolbar有足够的空间时,搜索图标会显示在Toolbar上;否则,它会显示在下拉菜单中。