网站域名地址是什么,wordpress 容易,广州番禺网站建设公司推荐,ai设计logo免费网站Toolbar
对于控件ActionBar我们非常熟悉#xff0c;就是我们常见的标题栏#xff0c;但ActionBar只能位于活动的顶部#xff0c;因此我们更建议使用Toolbar。在新建一个项目的时候都是默认显示ActionBar#xff0c;我们要使用Toolbar就需要先将标题栏改为不显示
先来看看…Toolbar
对于控件ActionBar我们非常熟悉就是我们常见的标题栏但ActionBar只能位于活动的顶部因此我们更建议使用Toolbar。在新建一个项目的时候都是默认显示ActionBar我们要使用Toolbar就需要先将标题栏改为不显示
先来看看界面各个部位的属性 colorAccent不只用来指定这样一个按钮的颜色而是更多表达了一个强调的意思例如一些控件的选中状态也会使用colorAccent的颜色
基本使用
接下来就看看Toolbar的使用
androidx.appcompat.widget.Toolbarandroid:idid/toolbarandroid:layout_widthmatch_parentandroid:layout_height?attr/actionBarSizeandroid:backgroundcolor/blackandroid:themestyle/ThemeOverlay.AppCompat.Dark.ActionBarapp:popupThemestyle/ThemeOverlay.AppCompat.Light/layout_height这个属性我们非常熟悉了但对于后面进行一下解释?attr/actionBarSize 是一个主题属性引用它引用了当前主题中定义的 ActionBar 的标准高度
android:theme将 Toolbar 的主题设置为暗色主题
app:popupTheme当我们为标题添加菜单按钮的时候按钮也会是暗色的主题页面就会非常不和谐因此将标题设置为淡色主题
接下来就看看主活动当中的设置
Toolbar toolbar (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar getSupportActionBar();
if (actionBar ! null) {actionBar.setDisplayHomeAsUpEnabled(true); /*actionBar.setHomeAsUpIndicator(R.drawable.ic_launcher_foreground);*/
}setDisplayHomeAsUpEnabled()设置了 ActionBar 的 homeAsUp 属性为 true。homeAsUp 属性的作用是让 ActionBar 的左侧显示一个向上导航的按钮通常是一个箭头图标点击这个按钮可以触发向上导航的行为。调用这个方法并传入 true 会启用这个按钮。如果用户点击这个按钮它会调用 onOptionsItemSelected 方法并传入 android.R.id.home 作为 itemId 参数。你可以在这个方法中处理点击事件比如导航回上一个 Activity。
setHomeAsUpIndicator()就是为这个按钮设置图标当我们不设置的时候就会使用默认的图标运行程序如下图所示 尝试为左上角的导航按钮注册点击事件使按下按钮但回到上一个活动
Override
public boolean onOptionsItemSelected(NonNull MenuItem item) {//android.R.id.home 是 Android 框架中定义的一个资源 ID它代表了 ActionBar 中的“向上”或“返回首页”按钮的点击事件的IDif (item.getItemId() android.R.id.home) {finish();return true;}return super.onOptionsItemSelected(item);
}添加菜单
我们先设置一个目录
menu xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoitemandroid:idid/homeandroid:icondrawable/ic_launcher_foregroundandroid:titlehomeapp:showAsActionalways/itemandroid:idid/findandroid:icondrawable/ic_launcher_foregroundandroid:titlefindapp:showAsActionifRoom/itemandroid:idid/myandroid:icondrawable/ic_launcher_foregroundandroid:titlemyapp:showAsActionnever/
/menu将目录加载在Toolbar上
Override
public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);return true;
}此时运行程序 为什么会出现这样的分布就是我们在设置目录的时候设置的app:showAsAction属性
app:showAsAction 属性可以设置的一些值及其含义
always: 总是显示在 Toolbar 上。不论 Toolbar 上有多少其他菜单项这个菜单项都会直接显示在 Toolbar 上ifRoom: 如果 Toolbar 上有足够空间就显示在 Toolbar 上。如果空间不足它会被放置在溢出菜单Overflow Menu中never: 从不直接显示在 Toolbar 上总是位于溢出菜单中
滑动菜单
DrawerLayout
NavigationView
先给大家介绍如何将一个图片设置为圆形首先需要添加依赖
implementation(de.hdodenhof:circleimageview:3.1.0)首先我们制定一个目录将所有的子目录放在一个group组当中为其设置属性为single
menu xmlns:androidhttp://schemas.android.com/apk/res/androidgroup android:checkableBehaviorsingleitemandroid:idid/home1android:icondrawable/ic_launcher_foregroundandroid:titlefind/itemandroid:idid/find1android:icondrawable/ic_launcher_foregroundandroid:titlefind/itemandroid:idid/my1android:icondrawable/ic_launcher_foregroundandroid:titlemy//group/menuandroid:checkableBehavior属性补充 None: 这是默认值。当设置为 None 时视图可以独立地被选中或取消选中不会影响其他具有相同 android:checkable 属性的视图。Single: 当设置为 Single 时如果一个视图被选中其他所有具有相同 android:checkable 属性的视图将自动取消选中。这个行为通常用于单选按钮RadioButton组确保用户在一组选项中只能选择一个。All: 这个值实际上并不存在于 android:checkableBehavior 属性中。可能是你想要表达的是 Toggle 行为当设置为 Toggle 时视图会在被点击时在选中和未选中状态之间切换这通常用于复选框CheckBox 我们为滑倒出来的布局设置一个头布局
RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:padding10dpandroid:layout_heightmatch_parentde.hdodenhof.circleimageview.CircleImageViewandroid:idid/iconimgandroid:layout_width70dpandroid:layout_height70dpandroid:srcdrawable/draw1android:layout_centerInParenttrue/TextViewandroid:idid/mailtextandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_alignParentStarttrueandroid:layout_alignParentBottomtrueandroid:layout_marginStart10dpandroid:layout_marginBottom241dpandroid:text123456789qq.comandroid:textSize15sp /TextViewandroid:idid/userTextandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_belowid/iconimgandroid:layout_alignParentStarttrueandroid:layout_marginStart20dpandroid:layout_marginTop153dpandroid:gravitystartandroid:text自然醒android:textSize15sp //RelativeLayout修改活动中的布局将之前的线性布局转换为
com.google.android.material.navigation.NavigationViewandroid:idid/nav_viewandroid:layout_widthwrap_contentandroid:layout_heightmatch_parentandroid:layout_gravitystartapp:headerLayoutlayout/nav_headerapp:menumenu/nav_menu /此时我们就可以通过向右划动将布局显示出来修改活动的代码
NavigationView navigationView (NavigationView) findViewById(R.id.nav_view);
//将一开始的选择默认设置为find1
navigationView.setCheckedItem(R.id.find1);
//注册选项的点击事件
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {Overridepublic boolean onNavigationItemSelected(NonNull MenuItem menuItem) {drawrLayout.closeDrawers();return true;}
});运行程序 悬浮按钮和可交互提示
FloatingActionButton
这个控件可以轻松的实现悬浮按钮的效果使用与Button一样
com.google.android.material.floatingactionbutton.FloatingActionButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitybottom|endandroid:layout_margin30dpandroid:srcdrawable/draw11//设置悬浮的高度 android:elevation8dp/SnackBar
在前面我们经常使用Toast来提示用户但并没有让用户有选择的权力。这个控件就可以让用户可以根据提示进行选择
FloatingActionButton floatingActionButton (FloatingActionButton) findViewById(R.id.fab);
floatingActionButton.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {Snackbar.make(v, data delete, Snackbar.LENGTH_SHORT).setAction(Undo, new View.OnClickListener() {Overridepublic void onClick(View v) {Toast.makeText(DrawrLayout.this, data restored, Toast.LENGTH_SHORT).show();}}).show();}
});此时运行程序 按下悬浮按钮就会出现提示无论你是否按下UNDO按钮到时间都会消失当按下UNDO按钮就会根据我们的代码出现Toast提示。
CoordinatorLayout
相当于一个增强版的Framelayout,可以监听页面的子控件然后做出合理响应。例如在上面的示例当中当悬浮窗位于页面的右下角按下悬浮按钮提示弹窗弹出的时候就会遮住一部分按钮看起来体验非常不好当布局设置为CoordinatorLayout按下悬浮按钮提示弹出的时候按钮也会相应的向上移动。
卡片式布局
实际上MaterialCardView也属于FrameLayout只是额外提供了阴影和圆角等效果。让内容显示在一张卡片当中拥有圆角和投影
CardView
先设置RecyclerView子布局
com.google.android.material.card.MaterialCardView xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentxmlns:apphttp://schemas.android.com/apk/res-autoandroid:layout_margin5dpapp:cardCornerRadius4dpLinearLayoutandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentImageViewandroid:idid/FruitImageandroid:layout_widthmatch_parentandroid:layout_height100dpandroid:scaleTypecenterCrop/TextViewandroid:idid/FruitTextandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_horizontalandroid:layout_margin5dpandroid:textSize16sp//LinearLayout/com.google.android.material.card.MaterialCardView与RecyclerView的制作一样运行程序 文章到这里就结束了