专栏首页小海编码日记Android 基础[Layout & View]

Android 基础[Layout & View]

推一篇Android基础文章,关于Layout,View的一些小细节。目前已经把MediaCodec系列的第四篇拆分成两部分,会尽快编写完推给大家,大家先看点这些小菜养养眼。


TextView

  • 利用TextViewdrawableLeft/drawableStart实现同时显示文字和图片,drawablePadding控制图片文字间距
  • 利用android:autolink="all"来设置文本为链接形式,可在字符串中使用<a href="">link</a>来指定URL
  • 利用android:textIsSelectable="true|false"指定TextView上的文本是否可选中
  • android:gravity控制自身内容显示位置,android:layout_gravity控制相对父控件的显示位置
  • android:paddingLeft自身内容距自己左边界的距离,android:marginLeft相对父控件左边界的距离

ImageView

ImageView设置图片资源的三种方式:

  • setImageResource(R.drawable.bg);
  • setImageDrawable(this.getResource().getDrawable(R.drawable.bg));
  • Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/bg.jpg");img.setImageBitmap(bitmap);

ImageViewscaleType属性:

  • center:保持原图,显示在ImageView中心,原图大于ImageView Size则裁剪
  • centerCrop:填满整个ImageView,等比例放大,超出裁剪
  • centerInside:图中内容完全显示,如果原图size小于ImageView size,不作处理
  • matrix:不改变原图大小,从ImageView左上角开始绘制原图,超出裁剪
  • fitCenter:将原图按比例放大或缩小至ImageView的size,居中显示
  • fitEnd:将原图按比例放缩至ImageView size,显示在ImageView的下半部分
  • fitStart:将原图按比例放缩至ImageView size,显示在ImageView的上半部分
  • fitXY:原图按照指定大小在ImageView中显示,不维持原有比例,填充满ImageView

EditText

android:imeOptions属性:

  • flagNoFullscreen:禁用横屏全屏
  • actionPrevious:跳入前一个输入框
  • actionGo:进入用户输入项[eg:网页]
  • actionSend:提交信息
  • actionNext:跳入下一个输入框
  • actionDone:输入完成,关闭软键盘

Button & ImageButton

  • Button可以设置图片和文本,ImageButton只能设置图片
  • 可以通过android:textAllcaps="false"禁用Button字符串全大写

Space

<Space>组件用于添加间距,用法如下:

<Space android:layout_width="match_parent" android:layout_height="10dp"/>

Toast

显示图片的Toast,代码如下:

Toast toast = Toast.makeText(this,"text",Toast.LENGTH_LONG);
ImageView image = new ImageView(this);
view.setImageResource(R.drawable.toast_png);
toast.setView(view);
toast.show();

LIstView

  • Item Height 可以使用android:minHeight="100dp",结合android:layout_height="wrap_content"实现动态高度;
  • Item divider 可以通过重写ListViewisEnabled()方法实现动态控制某一个分割线有无即可,此时enable false的item点击事件失效,如果全部不需要分割线,可使用android:divider="@null"实现,例如要实现第n项和第n+1项之间的divider不存在,只需控制第n项enable=false即可;
  • Empty View 可以通过listview.setEmptyView(view)来为ListView设置一个内容为空时显示的View;
  • Over Scroll 可以通过修改ListView的maxOverScrollY参数实现一个滑动有弹性的ListView效果,我们可以通过重写overScrollBy()方法将自己的maxOverScrollY传入,代码如下:
@Override
protected boolean overScrollBy(int deltaX,int deltaY,int scrollX,int scrollY,int scrollRangeX,int scrollRangeY,int maxOverScrollX,int maxOverScrollY,boolean isTouchEvent){
   return super.overScrollBy(deltaX,deltaY,scrollX,scrollY,scrollRangeX,scrollRangeY,maxOverScrollX,mMaxOverScrollY,isTouchEvent);
}

其中mMaxOverScrollY初始化过程如下:

private void initView(){
   mMaxOverDistance = 200;
   DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
   float density = metrics.density;
   mMaxOverScrollY = (int)(density * mMaxOverDistance);
}

LinearLayout

LinearLayout自带分割线

  • 通过android:showDividers="none|beginning|middle|end"实现,dividerPadding控制分割线与内容之间的间距,divider用于声明分割线的资源 布局方式
  • 使用android:gravity="bottom"让子View从下往上排
  • 使用android:layout_weight="1",android:layout_width/android:layout_height="0dp"实现均分或者填充剩余部分

DrawerLayout

DrawerLayout关闭手势滑动:

  • drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
  • drawerLayout.removeView(view)[直接移除View,比较粗暴];

PercentFrameLayout

通过gradle compile引入,使用单独的app命名空间,在XML声明宽高百分比

Android抽象布局

  • <include/>:重用布局,使用单独的layout属性来实现布局重用,如果<include/>标签与layout本身都设置了id,那么layout id将被覆盖
  • <merge/>:减少视图层级,必须用作XML根标签,起作用是删除多余层级优化UI渲染速度
  • <viewstub/>:动态加载View,不影响UI初始化,加快渲染速度,类似于Java懒加载

本文分享自微信公众号 - 小海编码日记(gh_1f87b8c00ede),作者:脱召兵

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android 基础[Hide ToolBar When ListView Scroll]

    这一篇描述怎样实现动态隐藏Toobar的需求,会涉及到属性动画的一些小细节,希望大家能自己动手实践下,毕竟实践是检验真理的唯一标准。

    小海编码日记
  • Android 基础[花式实现底部导航栏之TabLayout]

    前文中我们已经简单介绍了BottomNavigationView实现选项卡页面的细节,接下来我们继续花式实现底部导航栏之旅,本片中主要是使用TabLayout实...

    小海编码日记
  • [Android 基础]为页面跳转添加旋转动画

    无意间看到一篇关于页面跳转动画效果的博文,在Android源码API demo中也有相似的实现(FlipAnimation),这里写文以记之,实现后的效果如下图...

    小海编码日记
  • Android ImgView属性图文详解

    background是组件通用属性,不仅可以设置组件的背景颜色,也可以用图片做背景。

    砸漏
  • ImageView的ScaleType之见解

    蜻蜓队长
  • Android 中ImageView的ScaleType使用方法

    ImageView的ScaleType属性,表示的是ImageView中资源图片的填充方式。scaleType的属性值有好几种,分别是:

    砸漏
  • 10.侧拉删除

    六月的雨
  • Android实现幻灯片式图片浏览器

    最下面一个画廊视图,选中画廊中的图片,会在上面的ImageSwitcher控件中显示大图。

    砸漏
  • Android实现仿Windows7图片预览窗格效果

    本实例将显示类似于windows7提供的图片预览窗格效果,单击任意一张图片,可以在右侧显示该图片的预览效果。

    砸漏
  • Android中的权限问题

    在Android程序中,在执行形如访问网络、读取联系人时都要声明权限,在 Android 系统版本小于6.0时,所有的权限只需要在AndroidManifest...

    指点

扫码关注云+社区

领取腾讯云代金券