济南网站开发培训班wordpress主题源文件

当前位置: 首页 > news >正文

济南网站开发培训班,wordpress主题源文件,营销型网站建设深度网,南通网站制作系统主流APP在顶部都配有导航栏#xff0c;在 Android 中#xff0c;ActionBar 是默认启用的#xff0c;它是位于屏幕顶部的一个工具栏#xff0c;用来放置应用的标题、导航和操作菜单。 如果你想使用自定义的 Toolbar 来替代 ActionBar#xff0c;应该先关闭它。可以通过设置…        主流APP在顶部都配有导航栏在 Android 中ActionBar 是默认启用的它是位于屏幕顶部的一个工具栏用来放置应用的标题、导航和操作菜单。 如果你想使用自定义的 Toolbar 来替代 ActionBar应该先关闭它。可以通过设置 NoActionBar 主题或者在代码中手动隐藏 ActionBar 来实现。 一、关闭ActionBar 在 styles.xml 中继承 Theme.AppCompat.Light.NoActionBar 或Theme.MaterialComponents.DayNight.NoActionBar 来关闭默认的 ActionBar。 resourcesstyle nameAppCompatTheme parentTheme.AppCompat.Light.NoActionBar/style/resources然后在 AndroidManifest.xml 中应用该主题。 假设你想应用这个主题到整个应用你可以在 AndroidManifest.xml 中设置它 applicationandroid:themestyle/AppCompatTheme… /application或者你也可以在单个活动Activity中使用 activityandroid:name.MainActivityandroid:themestyle/AppCompatTheme /activity二、创建活动页面的XML文件 LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroidx.appcompat.widget.Toolbarandroid:idid/tl_headandroid:layout_widthmatch_parentandroid:layout_heightwrap_content /LinearLayoutandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:orientationverticalandroid:padding5dpTextViewandroid:idid/tv_descandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textColorcolor/blackandroid:textSize17spandroid:text该页面演示工具栏功能 //LinearLayout/LinearLayout 在 Android 中ToolBar 是一个继承自 ViewGroup 的类。ViewGroup 是一个视图容器它可以包含其他视图包括其他 View 或 ViewGroup而 ToolBar 作为一个 ViewGroup也具有这种容器的特性。ToolBar 本质上是一个布局容器它可以包含多个视图组件比如按钮、文本、图标等。这些组件可以通过布局参数进行管理和排列。 三、创建活动页面 public class ToolbarActivity extends AppCompatActivity {private final static String TAG ToolbarActivity;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_toolbar);Toolbar tl_head findViewById(R.id.tl_head); // 从布局文件中获取名叫tl_head的工具栏tl_head.setTitle(工具栏页面); // 设置工具栏的标题文本setSupportActionBar(tl_head); // 使用tl_head替换系统自带的ActionBartl_head.setTitleTextColor(Color.RED); // 设置工具栏的标题文字颜色tl_head.setLogo(R.drawable.ic_app); // 设置工具栏的标志图片tl_head.setSubtitle(Toolbar); // 设置工具栏的副标题文本tl_head.setSubtitleTextColor(Color.YELLOW); // 设置工具栏的副标题文字颜色tl_head.setBackgroundResource(R.color.blue_light); // 设置工具栏的背景tl_head.setNavigationIcon(R.drawable.ic_back); // 设置工具栏左边的导航图标// 给tl_head设置导航图标的点击监听器// setNavigationOnClickListener必须放到setSupportActionBar之后不然不起作用tl_head.setNavigationOnClickListener(view - {finish(); // 结束当前页面});}}其中setSupportActionBar是用自定义工具栏代替系统自带的顶部导航栏ActionBar之后可以为顶部导航栏设置诸多属性。 下面这段代码是在设置 ToolBar 的导航按钮点击事件监听器。具体来看代码的作用是当用户点击 ToolBar 上的导航按钮通常是左上角的返回按钮时执行 finish() 方法来结束当前活动即关闭当前页面。 tl_head.setNavigationOnClickListener(view - {finish();}); 半屏效果图如下  四、溢出菜单 当导航栏的内容不够放就需要设置溢出菜单例如下面的三个点图标点击之后弹出窗口。 1.活动页面XML代码如下 LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroidx.appcompat.widget.Toolbarandroid:idid/tl_headandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:backgroundcolor/blue_lightapp:navigationIcondrawable/ic_back /LinearLayoutandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:orientationverticalandroid:padding5dpTextViewandroid:idid/tv_descandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textColorcolor/blackandroid:textSize17spandroid:text该页面演示溢出菜单功能 //LinearLayout/LinearLayout app:navigationIcondrawable/ic_back 这一属性的作用是为 ToolBar 设置一个导航按钮的图标通常位于 ToolBar 左侧常见用途是返回按钮。 2.创建菜单文件 下面是包含3个菜单项的溢出菜单XML  menu xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-auto itemandroid:idid/menu_refreshandroid:icondrawable/ic_refreshapp:showAsActionifRoomandroid:title刷新/itemandroid:idid/menu_aboutandroid:icondrawable/ic_aboutapp:showAsActionneverandroid:title关于/itemandroid:idid/menu_quitandroid:icondrawable/ic_quitapp:showAsActionneverandroid:title退出//menumenu 标签在 Android 开发中主要用于创建菜单常用于 ToolBar、PopupMenu、ContextMenu、BottomNavigationView 等。 xmlns:apphttp://schemas.android.com/apk/res-auto 是 XML 命名空间声明它的作用是支持 Android 自定义属性比如 app:showAsAction、app:navigationIcon 等。 在 Android XML 布局文件中某些自定义属性不是标准的 Android 属性即 android: 开头的这些自定义属性通常来自 AndroidX 组件、Material Design 组件或第三方库xmlns:apphttp://schemas.android.com/apk/res-auto 允许你在 XML 中使用这些库提供的属性。 这里的appshowAsAction有多种取值例如取never则该菜单项一定不在导航栏显示。 因此刷新这个选项会显示在导航栏上而关于、推出则会放入溢出菜单列表。  3.下面是在活动代码中增加对菜单的处理逻辑。 SuppressLint(SetTextI18n) public class OverflowMenuActivity extends AppCompatActivity {private TextView tv_desc; // 声明一个文本视图对象Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_overflow_menu);Toolbar tl_head findViewById(R.id.tl_head); // 从布局文件中获取名叫tl_head的工具栏tl_head.setTitle(溢出菜单页面); // 设置工具栏的标题文字setSupportActionBar(tl_head); // 使用tl_head替换系统自带的ActionBartv_desc findViewById(R.id.tv_desc);}Overridepublic boolean onCreateOptionsMenu(Menu menu) {// 从menu_overflow.xml中构建菜单界面布局getMenuInflater().inflate(R.menu.menu_overflow, menu);return true;}Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id item.getItemId(); // 获取菜单项的编号if (id android.R.id.home) { // 点击了工具栏左边的返回箭头finish(); // 结束当前页面} else if (id R.id.menu_refresh) { // 点击了刷新图标tv_desc.setText(当前刷新时间: DateUtil.getNowTime());} else if (id R.id.menu_about) { // 点击了关于菜单项Toast.makeText(this, 这个是工具栏的演示demo, Toast.LENGTH_LONG).show();} else if (id R.id.menu_quit) { // 点击了退出菜单项finish(); // 结束当前页面}return super.onOptionsItemSelected(item);}} SuppressLint(SetTextI18n) 是 Android Lint 的一个注解用于抑制 SetTextI18n 相关的 Lint 检查警告。在 Android 开发中TextView.setText() 直接拼接字符串时Lint 会警告你应该使用国际化i18n资源而不是硬编码的字符串。如果你确定这个警告可以忽略就可以使用 SuppressLint(SetTextI18n) 来关闭它。 例如textView.setText(用户名 username);Lint 会报 Hardcoded text should use StringRes instead硬编码文本应该使用 strings.xml 的警告警告原因 直接使用 用户名 这样的硬编码字符串不利于国际化i18n应该使用 strings.xml 定义文本。 onCreate中的代码就是上面提到的用自定义的顶部导航栏代替系统自有的导航栏。 着重看下面的代码它的主要功能是加载 XML 菜单文件并将其显示在 Toolbar 或 ActionBar 上。 Overridepublic boolean onCreateOptionsMenu(Menu menu) {// 从menu_overflow.xml中构建菜单界面布局getMenuInflater().inflate(R.menu.menu_overflow, menu);return true;}onCreateOptionsMenu(Menu menu) 方法原本属于 Activity 类它是 Android Activity 生命周期的一部分用于创建选项菜单Options Menu。 你需要重写Override这个方法因为 默认的 onCreateOptionsMenu() 方法是空实现的如果你不重写它菜单不会显示。你需要告诉系统如何创建菜单并指定菜单的内容即加载 menu.xml。 3.1为什么要使用 Menu 而不是直接在 XML 里写按钮 Menu 是 专门用于 Toolbar 或 ActionBar 的菜单项系统会自动管理它们 菜单项会自动适应设备屏幕大小小屏幕时会隐藏到 … 溢出菜单。可以动态管理菜单项比如在不同页面显示不同的菜单。有统一的交互逻辑长按、点击、图标显示规则。 如果你直接在 activity_main.xml 里写 Button它只是普通按钮不会自动适配 Toolbar体验很糟糕。 3.2 如何确保菜单项显示在顶部导航栏 setSupportActionBar(tl_head) 方法的作用是设置自定义的 Toolbar 作为该 Activity 的操作栏ActionBar。在设置了自定义的 Toolbar 后onCreateOptionsMenu 方法中的菜单项通过 getMenuInflater().inflate(R.menu.menu_overflow, menu) 加载会自动显示在这个 Toolbar 上而不是其他地方。 这个行为是由 AppCompatActivity 提供的它会在 Toolbar 上显示菜单项前提是调用了 setSupportActionBar(tl_head) 来替换默认的 ActionBar。 因此确保菜单项显示在顶部导航栏的关键步骤是 使用 Toolbar 替代默认的 ActionBarsetSupportActionBar(tl_head)。在 onCreateOptionsMenu 中加载菜单项getMenuInflater().inflate(R.menu.menu_overflow, menu)。 3.3 点击事件 int id item.getItemId(); // 获取菜单项的编号。item.getItemId() 返回的是被点击的菜单项的ID。通过这个ID后续的 if 语句可以判断是哪一个菜单项被点击了。 最后调用 super.onOptionsItemSelected(item)这样可以让父类继续处理其他未被处理的菜单项确保系统的其他行为不会受到影响。 3.4 为什么没有写监听器仍然能通过点击事件判断 ID onOptionsItemSelected 方法是用于处理用户点击菜单项时的事件处理。当用户点击菜单项时系统会自动调用 onOptionsItemSelected 方法并传递一个 MenuItem 对象。在 onOptionsItemSelected 方法中你可以通过 item.getItemId() 获取到被点击的菜单项的 ID从而判断用户点击了哪个菜单项并执行对应的操作。 不需要显式地为每个菜单项写监听器因为 onOptionsItemSelected 方法已经充当了菜单项的事件监听器。系统会自动识别哪个菜单项被点击并通过 item.getItemId() 将菜单项的 ID 传递给 onOptionsItemSelected 方法。 所以你在 onOptionsItemSelected 中通过判断 item.getItemId() 来执行特定操作系统已经为你处理了菜单项的点击事件免去了为每个菜单项单独添加监听器的需求。 代码流程概述 在 onCreate 中 获取并设置工具栏。使用 setSupportActionBar(tl_head) 来替换默认的 ActionBar这样就会显示你自定义的工具栏。 在 onCreateOptionsMenu 中 通过 getMenuInflater().inflate(R.menu.menu_overflow, menu) 将 menu_overflow.xml 中的菜单项加载到工具栏上确保菜单项显示在顶部。 在 onOptionsItemSelected 中 监听菜单项的点击事件通过 item.getItemId() 判断点击了哪个菜单项然后执行相应操作。
效果