【Android开发-28】Android中主题Theme和Toolbar的用法介绍
1,主题Theme
在Android中,主题(Theme)是一种用于定义应用程序用户界面外观的样式。主题可以包括颜色、字体、布局、控件样式等属性。通过使用主题,开发者可以轻松地为应用程序创建一致且具有吸引力的用户界面。
要使用主题,首先需要在AndroidManifest.xml文件中为应用程序指定一个主题:
<application
android: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的属性,它将应用于应用程序中的所有文本控件。要在布局文件中使用这个属性,只需将其作为控件的样式引用即可:
<TextView
style="@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.Toolbar
android: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.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<MenuView
android: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;
@Override
protected 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方法,处理菜单项点击事件
@Override
public 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">
<item
android:id="@+id/menu_item1"
android:icon="@drawable/ic_menu_item1"
android:title="菜单项1" />
<item
android: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属性:
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_search"
android:title="搜索"
app:showAsAction="ifRoom" />
在这个例子中,当Toolbar有足够的空间时,搜索图标会显示在Toolbar上;否则,它会显示在下拉菜单中。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!