推一篇Android基础文章,关于Layout,View的一些小细节。目前已经把MediaCodec系列的第四篇拆分成两部分,会尽快编写完推给大家,大家先看点这些小菜养养眼。
TextView
的drawableLeft/drawableStart
实现同时显示文字和图片,drawablePadding
控制图片文字间距android:autolink="all"
来设置文本为链接形式,可在字符串中使用<a href="">link</a>
来指定URLandroid:textIsSelectable="true|false"
指定TextView上的文本是否可选中android:gravity
控制自身内容显示位置,android:layout_gravity
控制相对父控件的显示位置android:paddingLeft
自身内容距自己左边界的距离,android:marginLeft
相对父控件左边界的距离ImageView
设置图片资源的三种方式:
ImageView
的scaleType
属性:
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中显示,不维持原有比例,填充满ImageViewandroid:imeOptions
属性:
flagNoFullscreen
:禁用横屏全屏actionPrevious
:跳入前一个输入框actionGo
:进入用户输入项[eg:网页]actionSend
:提交信息actionNext
:跳入下一个输入框actionDone
:输入完成,关闭软键盘
Button
可以设置图片和文本,ImageButton
只能设置图片android:textAllcaps="false"
禁用Button
字符串全大写<Space>
组件用于添加间距,用法如下:
<Space android:layout_width="match_parent" android:layout_height="10dp"/>
显示图片的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();
android:minHeight="100dp"
,结合android:layout_height="wrap_content"
实现动态高度;ListView
的isEnabled()
方法实现动态控制某一个分割线有无即可,此时enable false的item点击事件失效,如果全部不需要分割线,可使用android:divider="@null"
实现,例如要实现第n项和第n+1项之间的divider不存在,只需控制第n项enable=false即可;listview.setEmptyView(view)
来为ListView
设置一个内容为空时显示的View;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
自带分割线
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.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
;drawerLayout.removeView(view)
[直接移除View,比较粗暴];通过gradle compile引入,使用单独的app命名空间,在XML声明宽高百分比
<include/>
:重用布局,使用单独的layout属性来实现布局重用,如果<include/>
标签与layout本身都设置了id,那么layout id将被覆盖<merge/>
:减少视图层级,必须用作XML根标签,起作用是删除多余层级优化UI渲染速度<viewstub/>
:动态加载View,不影响UI初始化,加快渲染速度,类似于Java懒加载本文分享自微信公众号 - 小海编码日记(gh_1f87b8c00ede),作者:脱召兵
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2017-11-29
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句