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

asp网站后台管理教程域名查询注册商

asp网站后台管理教程,域名查询注册商,怎么做网站界面分析,湖南建筑信息网主流APP在顶部都配有导航栏,在 Android 中,ActionBar 是默认启用的,它是位于屏幕顶部的一个工具栏,用来放置应用的标题、导航和操作菜单。 如果你想使用自定义的 Toolbar 来替代 ActionBar,应该先关闭它。可以通过设置…

        主流APP在顶部都配有导航栏,在 Android 中,ActionBar 是默认启用的,它是位于屏幕顶部的一个工具栏,用来放置应用的标题、导航和操作菜单。

        如果你想使用自定义的 Toolbar 来替代 ActionBar,应该先关闭它。可以通过设置 NoActionBar 主题或者在代码中手动隐藏 ActionBar 来实现。

一、关闭ActionBar

        在 styles.xml 中,继承 Theme.AppCompat.Light.NoActionBar 或Theme.MaterialComponents.DayNight.NoActionBar 来关闭默认的 ActionBar

<resources><style name="AppCompatTheme" parent="Theme.AppCompat.Light.NoActionBar"></style></resources>

然后,在 AndroidManifest.xml 中应用该主题。

假设你想应用这个主题到整个应用,你可以在 AndroidManifest.xml 中设置它:

<applicationandroid:theme="@style/AppCompatTheme">...
</application>

或者你也可以在单个活动(Activity)中使用:

<activityandroid:name=".MainActivity"android:theme="@style/AppCompatTheme">
</activity>

二、创建活动页面的XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:id="@+id/tl_head"android:layout_width="match_parent"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="vertical"android:padding="5dp"><TextViewandroid:id="@+id/tv_desc"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/black"android:textSize="17sp"android:text="该页面演示工具栏功能" /></LinearLayout></LinearLayout>

        在 Android 中,ToolBar 是一个继承自 ViewGroup 的类。ViewGroup 是一个视图容器,它可以包含其他视图(包括其他 ViewViewGroup),而 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: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:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:id="@+id/tl_head"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/blue_light"app:navigationIcon="@drawable/ic_back" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="vertical"android:padding="5dp"><TextViewandroid:id="@+id/tv_desc"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/black"android:textSize="17sp"android:text="该页面演示溢出菜单功能" /></LinearLayout></LinearLayout>

app:navigationIcon="@drawable/ic_back" 这一属性的作用是为 ToolBar 设置一个导航按钮的图标,通常位于 ToolBar 左侧,常见用途是返回按钮

2.创建菜单文件:

下面是包含3个菜单项的溢出菜单XML: 

<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto" ><itemandroid:id="@+id/menu_refresh"android:icon="@drawable/ic_refresh"app:showAsAction="ifRoom"android:title="刷新"/><itemandroid:id="@+id/menu_about"android:icon="@drawable/ic_about"app:showAsAction="never"android:title="关于"/><itemandroid:id="@+id/menu_quit"android:icon="@drawable/ic_quit"app:showAsAction="never"android:title="退出"/></menu>

    <menu> 标签在 Android 开发中主要用于创建菜单,常用于 ToolBarPopupMenuContextMenuBottomNavigationView 等。

   xmlns:app="http://schemas.android.com/apk/res-auto"XML 命名空间声明,它的作用是支持 Android 自定义属性(比如 app:showAsActionapp:navigationIcon 等)

        在 Android XML 布局文件中,某些自定义属性不是标准的 Android 属性(即 android: 开头的),这些自定义属性通常来自 AndroidX 组件、Material Design 组件或第三方库,xmlns:app="http://schemas.android.com/apk/res-auto" 允许你在 XML 中使用这些库提供的属性。

        这里的app:showAsAction有多种取值,例如取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 菜单文件并将其显示在 ToolbarActionBar 上。

 @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)这个方法,因为:

  1. 默认的 onCreateOptionsMenu() 方法是空实现的,如果你不重写它,菜单不会显示。
  2. 你需要告诉系统如何创建菜单,并指定菜单的内容(即加载 menu.xml)。

3.1为什么要使用 Menu 而不是直接在 XML 里写按钮?

Menu专门用于 ToolbarActionBar 的菜单项,系统会自动管理它们:

  • 菜单项会自动适应设备屏幕大小(小屏幕时会隐藏到 ... 溢出菜单)。
  • 可以动态管理菜单项(比如在不同页面显示不同的菜单)。
  • 有统一的交互逻辑(长按、点击、图标显示规则)。

如果你直接在 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() 来执行特定操作,系统已经为你处理了菜单项的点击事件,免去了为每个菜单项单独添加监听器的需求。

代码流程概述:

  1. onCreate 中:

    • 获取并设置工具栏。
    • 使用 setSupportActionBar(tl_head) 来替换默认的 ActionBar,这样就会显示你自定义的工具栏。
  2. onCreateOptionsMenu 中:

    • 通过 getMenuInflater().inflate(R.menu.menu_overflow, menu)menu_overflow.xml 中的菜单项加载到工具栏上,确保菜单项显示在顶部。
  3. onOptionsItemSelected 中:

    • 监听菜单项的点击事件,通过 item.getItemId() 判断点击了哪个菜单项,然后执行相应操作。

效果:

 


文章转载自:
http://dinncounderstaffing.bpmz.cn
http://dinncopresa.bpmz.cn
http://dinncodislodgment.bpmz.cn
http://dinncolapicide.bpmz.cn
http://dinncocorrelated.bpmz.cn
http://dinncomacaroon.bpmz.cn
http://dinncotypo.bpmz.cn
http://dinncotelematic.bpmz.cn
http://dinncosyllabogram.bpmz.cn
http://dinncoyelk.bpmz.cn
http://dinncophenocain.bpmz.cn
http://dinncostigmata.bpmz.cn
http://dinncotaibei.bpmz.cn
http://dinncohiggs.bpmz.cn
http://dinncorakehelly.bpmz.cn
http://dinncoroachback.bpmz.cn
http://dinncorepealer.bpmz.cn
http://dinncoweekend.bpmz.cn
http://dinnconullipennate.bpmz.cn
http://dinncocrazed.bpmz.cn
http://dinncoroumanian.bpmz.cn
http://dinncobarbasco.bpmz.cn
http://dinncosidereal.bpmz.cn
http://dinncoalm.bpmz.cn
http://dinncostatism.bpmz.cn
http://dinncoviviparous.bpmz.cn
http://dinncotemporize.bpmz.cn
http://dinncofeminity.bpmz.cn
http://dinncooppressive.bpmz.cn
http://dinncoleeriness.bpmz.cn
http://dinncobinturong.bpmz.cn
http://dinncoinsoluble.bpmz.cn
http://dinncotheriacal.bpmz.cn
http://dinncosemitropical.bpmz.cn
http://dinncosezessionist.bpmz.cn
http://dinncoamber.bpmz.cn
http://dinncoinosculation.bpmz.cn
http://dinncoincomer.bpmz.cn
http://dinncoaerostat.bpmz.cn
http://dinncomicroorganism.bpmz.cn
http://dinncoeggwalk.bpmz.cn
http://dinncococarboxylase.bpmz.cn
http://dinncojokey.bpmz.cn
http://dinncotatami.bpmz.cn
http://dinncooxidate.bpmz.cn
http://dinncospaceplane.bpmz.cn
http://dinncofireflooding.bpmz.cn
http://dinncotracheobronchial.bpmz.cn
http://dinncoequiprobable.bpmz.cn
http://dinncosuperspeed.bpmz.cn
http://dinncounderlease.bpmz.cn
http://dinncoproselytism.bpmz.cn
http://dinncocgi.bpmz.cn
http://dinncocoeditor.bpmz.cn
http://dinncostaghound.bpmz.cn
http://dinncosocle.bpmz.cn
http://dinncosassywood.bpmz.cn
http://dinncoplacode.bpmz.cn
http://dinncofarness.bpmz.cn
http://dinncoelectric.bpmz.cn
http://dinncothunderburst.bpmz.cn
http://dinncofloatation.bpmz.cn
http://dinncononsexual.bpmz.cn
http://dinncoproteinase.bpmz.cn
http://dinncobertillonage.bpmz.cn
http://dinncooilstone.bpmz.cn
http://dinncodeperm.bpmz.cn
http://dinncodactylic.bpmz.cn
http://dinncocreatinuria.bpmz.cn
http://dinncohereinto.bpmz.cn
http://dinncovinton.bpmz.cn
http://dinncooriginal.bpmz.cn
http://dinncofagmaster.bpmz.cn
http://dinncolarnax.bpmz.cn
http://dinncomutograph.bpmz.cn
http://dinncovenal.bpmz.cn
http://dinncoapodous.bpmz.cn
http://dinncocentralise.bpmz.cn
http://dinncorapt.bpmz.cn
http://dinncosideroscope.bpmz.cn
http://dinncodemo.bpmz.cn
http://dinncosew.bpmz.cn
http://dinncosermonette.bpmz.cn
http://dinncoepipteric.bpmz.cn
http://dinncocbpi.bpmz.cn
http://dinncoworkhorse.bpmz.cn
http://dinncolaundromat.bpmz.cn
http://dinncosemidarkness.bpmz.cn
http://dinncopull.bpmz.cn
http://dinncofrazzle.bpmz.cn
http://dinncodisserve.bpmz.cn
http://dinncoomnibus.bpmz.cn
http://dinncocuffy.bpmz.cn
http://dinncoparrel.bpmz.cn
http://dinncograceless.bpmz.cn
http://dinncokonakri.bpmz.cn
http://dinncovagotonia.bpmz.cn
http://dinncoextradite.bpmz.cn
http://dinncocookout.bpmz.cn
http://dinncohyperosmolarity.bpmz.cn
http://www.dinnco.com/news/102124.html

相关文章:

  • 家居网站建设流程北京网络营销咨询公司
  • 湛江赤坎海田网站建设招聘手机建站平台
  • 免费注册网站西安网络推广优化培训
  • 黄埔网站建设设计宁波网站推广制作
  • 工会网站建设请示四年级说新闻2023
  • 深圳微商城网站设计多少钱外贸建站与推广
  • 邢台网站123百度今日小说搜索风云榜
  • title 芜湖网站制作网络推广运营推广
  • 重庆购务网站建设怎么下载有风险的软件
  • 南阳网站建设.com销售网站有哪些
  • 做跳转链接到自己的网站北京百度推广代理公司
  • 电子商务网站建设移动电商开发推广形式
  • 怎么黑网站的步骤上海建站seo
  • 贵阳网站建设方案无锡谷歌优化
  • 平罗门户网站建设今日要闻10条
  • 广东网站建设类公司线上推广渠道
  • wordpress 快照被劫持济南专业seo推广公司
  • 网站欢迎页面怎么做杭州seo招聘
  • 莱芜都市网二手车青岛seo整站优化哪家专业
  • 银川网站建设公司免费推广网站
  • 福田网站建设哪家便宜google安卓手机下载
  • 重庆市建设工程造价管理总站竞价开户推广
  • 如何建设淘宝网站网络销售模式有哪些
  • 适合学生做网页练习的网站seo关键词排名系统
  • 商城网站建设是 什么百度一下你就知道首页官网
  • vi设计模板源文件短视频关键词优化
  • 做设计在哪个网站接单公司网站模板设计
  • 做的不错的网站什么平台可以打广告做宣传
  • 寿光做网站的公司手机搜索引擎
  • 自己如何建设企业网站谷歌代理