属性

android:descendantFocusability用法简析

    开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

    这时候就可以使用descendantFocusability来解决啦,API描述如下:

android:descendantFocusability

Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.

Must be one of the following constant values.

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

        beforeDescendants:viewgroup会优先其子类控件而获取到焦点

        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了,至此listview点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。

 

 

通过persistentDrawingCache指定缓存策略;flipInterval指定每个View动画之间的时间间隔;inAnimation和outAnimation分别指定View进出使用的动画效果。

 

LayoutAnimationController用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果,可以在XML文件中设置,亦可以在Java代码中设置。

一种直接在XML文件中设置

1.  res/anim文件夹下新建一个XML文件,名为list_anim_layout.xml,

  1. <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
  2.         android:delay="30%" 
  3.         android:animationOrder="reverse" 
  4.         android:animation="@anim/slide_right" /> 
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
        android:delay="30%"
        android:animationOrder="reverse"
        android:animation="@anim/slide_right" />

android:delay  子类动画时间间隔 (延迟)   70% 也可以是一个浮点数 如“1.2”等

android:animationOrder="random"   子类的显示方式 random表示随机

android:animationOrder 的取值有

 

normal0   默认
reverse1  倒序
random2  随机

android:animation="@anim/slide_right" 表示孩子显示时的具体动画是什么


 

说明:其中delay的单位为秒;animation为设置动画的文件。animationOrder为进入方式

2.  res/anim文件夹下新建一个XML文件,名为slide_right,即上面用到的文件。

  1.     <set xmlns:android="http://schemas.android.com/apk/res/android"  
  2.         android:interpolator="@android:anim/accelerate_interpolator"> 
  3.     <translate android:fromXDelta="-100%p" android:toXDelta="0" 
  4.             android:duration="@android:integer/config_shortAnimTime" /> 
  5. </set> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
		android:interpolator="@android:anim/accelerate_interpolator">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
            android:duration="@android:integer/config_shortAnimTime" />
</set>

显示的效果为ListView第一次出现的时候为 item随机出现 每个Item都是从左不可见(-100%p)的区域向右滑动到显示的地方

3.  在主布局文件中为控件添加如下配置:

android:layoutAnimation="@anim/list_anim_layout",即第一步的布局文件。


第二种设置方法:在Java代码中设置

1. 同上;

2. 同上;

4.  Acitivty中添加如下代码:


//通过加载XML动画设置文件来创建一个Animation对象;

       Animation animation=AnimationUtils.loadAnimation(this, R.anim.list_anim);

       //得到一个LayoutAnimationController对象;

       LayoutAnimationController lac=new LayoutAnimationController(animation);

       //设置控件显示的顺序;

       lac.setOrder(LayoutAnimationController.ORDER_REVERSE);

       //设置控件显示间隔时间;

       lac.setDelay(1);

       //ListView设置LayoutAnimationController属性;

   datalist.setLayoutAnimation(lac);


 

属性名称

描述

android:background

设置背景色/背景图片。可以通过以下两种方法设置背景为

透明:"@android:color/transparent"和"@null"。注意

TextView默认是透明的,不用写此属性,但是

Buttom/ImageButton/ImageView想透明的话就得写这个属

性了。

android:clickable

是否响应点击事件。

android:contentDescription

设置View的备注说明,作为一种辅助功能提供,为一些没

有文字描述的View提供说明,如ImageButton。这里在界

面上不会有效果,自己在程序中控制,可临时放一点字符

串数据。

android:drawingCacheQuality

设置绘图时半透明质量。有以下值可设置:auto(默认,

由框架决定)/high(高质量,使用较高的颜色深度,消耗

更多的内存)/low(低质量,使用较低的颜色深度,但是

用更少的内存)。

android:duplicateParentState

如果设置此属性,将直接从父容器中获取绘图状态(光标,

按下等)。 见下面代码部分,注意根据目前测试情况仅仅是

获取绘图状态,而没有获取事件,也就是你点一下

LinearLayout时Button有被点击的效果,但是不执行点击事

件。

android:fadingEdge

设置拉滚动条时 ,边框渐变的放向。none(边框颜色不

变),horizontal(水平方向颜色变淡),vertical

(垂直方向颜色变淡)。参照fadingEdgeLength的

效果图

android:fadingEdgeLength

设置 边框渐变的长度。

android:fitsSystemWindows

设置布局调整时是否考虑系统窗口(如状态栏)

android:focusable

设置是否获得焦点。若有requestFocus()被调用时,后者

优先处理。注意在表单中想设置某一个如EditText获取焦

点,光设置这个是不行的,需要将这个EditText前面的

focusable都设置为false才行。在Touch模式下获取焦点

需要设置focusableInTouchMode为true。

android:focusableInTouchMode

设置在Touch模式下View是否能取得焦点。

android:hapticFeedbackEnabled

设置触感反馈。(译者注:按软键以及进行某些UI交互时振动,暂时不知道用法,大家可以找找performHapticFeedback或HapticFeedback这个关键字的资料看看。)

android:id

给当前View设置一个在当前layout.xml中的唯一编号,可

以通过调用View.findViewById() 或Activity.findViewById()

根据这个编号查找到对应的View。不同的layout.xml之间

定义相同的id不会冲突。格式如”@+id/btnName”

android:isScrollContainer

设置当前View为滚动容器。这里没有测试出效果来,

ListView/ GridView/ ScrollView根本就不用设置这个属性,

而EdidText设置android:scrollbars也能出滚动条。

android:keepScreenOn

View在可见的情况下是否保持唤醒状态。

常在LinearLayout使用该属性,但是模拟器这里没有效果。

android:longClickable

设置是否响应长按事件.

android:minHeight

设置视图最小高度

android:minWidth

设置视图最小宽度度

android:nextFocusDown

设置下方指定视图获得下一个焦点。焦点移动是基于一个

给定方向查找最近邻居的算法。如果指定视图不存在,

移动焦点时将报运行时错误。可以设置

imeOptions= actionDone,这样输入完即跳到下一个焦点。

android:nextFocusLeft

设置左边指定视图获得下一个焦点。

android:nextFocusRight

设置右边指定视图获得下一个焦点。

android:nextFocusUp

设置上方指定视图获得下一个焦点。

android:onClick

点击时从上下文中调用指定的方法。这里指定一个方法名

称,一般在Activity定义符合如下参数和返回值的函数并将

方法名字符串指定为该值即可:

public void onClickButton(View view)

android:onClick=” onClickButton”

android:padding

设置上下左右的边距,以像素为单位填充空白。

android:paddingBottom

设置底部的边距,以像素为单位填充空白。

android:paddingLeft

设置左边的边距,以像素为单位填充空白。

android:paddingRight

设置右边的边距,以像素为单位填充空白。.

android:paddingTop

设置上方的边距,以像素为单位填充空白。

android:saveEnabled

设置是否在窗口冻结时(如旋转屏幕)保存View的数据,

默认为true,但是前提是你需要设置id才能自动保存,参

这里

android:scrollX

以像素为单位设置水平方向滚动的的偏移值,在GridView

中可看的这个效果。

android:scrollY

以像素为单位设置垂直方向滚动的的偏移值

android:scrollbarAlwaysDrawHorizontalTrack

设置是否始终显示垂直滚动条。这里用ScrollView、ListView

测试均没有效果。

android:scrollbarAlwaysDrawVerticalTrack

设置是否始终显示垂直滚动条。这里用ScrollView、ListView

测试均没有效果。

android:scrollbarDefaultDelayBeforeFade

设置N毫秒后开始淡化,以毫秒为单位。

android:scrollbarFadeDuration

设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,

以毫秒为单位。Android2.2中滚动条滚动完之后会消失,再

滚动又会出来,在1.5、1.6版本里面会一直显示着。

android:scrollbarSize

设置滚动条的宽度。

android:scrollbarStyle

设置滚动条的风格和位置。设置值:insideOverlay、

insideInset、outsideOverlay、outsideInset。这里没有试出太

多效果,以下依次是outsideOverlay与outsideInset效果截

图比较:

android:scrollbarThumbHorizontal

设置水平滚动条的drawable(如颜色)。

android:scrollbarThumbVertical

设置垂直滚动条的drawable(如颜色).

android:scrollbarTrackHorizontal

设置水平滚动条背景(轨迹)的色drawable(如颜色)

android:scrollbarTrackVertical

设置垂直滚动条背景(轨迹)的drawable注意直接
设置颜色值如”android:color/white”将得出很
难看的效果,甚至都不理解这个属性了,这里可以
参见ApiDemos里res/drawable/ 
scrollbar_vertical_thumb.xml和
scrollbar_vertical_track.xml,设置代码为:
android:scrollbarTrackVertical 
="@drawable/scrollbar_vertical_track"

android:scrollbars

设置滚动条显示。none(隐藏),horizontal(水平),vertical

(垂直)。见下列代码演示使用该属性让EditText内有滚动

条。但是其他容器如LinearLayout设置了但是没有效果。

android:soundEffectsEnabled

设置点击或触摸时是否有声音效果

android:tag

设置一个文本标签。可以通过View.getTag()或 for with

View.findViewWithTag()检索含有该标签字符串的View。但

一般最好通过ID来查询View,因为它的速度更快,并且允

许编译时类型检查。

android:visibility

设置是否显示View。设置值:visible(默认值,显示),

invisible(不显示,但是仍然占用空间),gone

(不显示,不占用空间)

 

 

 

 

 

属性名称

相关方法

描述

android:baselineAligned

setBaselineAligned (boolean baselineAligned)

是否允许用户调整它内容的基线。

android:baselineAlignedChildIndex

setBaselineAlignedChildIndex (int i)

是当前LinearLayout与其它View的对齐方式

android:gravity

setGravity (int gravity)

指定控件中内容的基本内容的对齐方式(本元素里的所有元素的重力方向)。其值有:topbottomleftrightcenter_verticalfill_verticalcenter_horizontalfill_horizontalcenterfillclip_verticalclip_horizontal

android:layout_gravity

是当前元素相对于父元素的重力方向

android:measureWithLargestChild

当被设置为真时,所有的子控件将被认为是具有重量最小面积最大的子控件

android:orientation

setOrientation (int orientation)

置它内容的对其方向,有两个可以选择的值: horizontal和vertical。分别表示水平排列和垂直排列。

android:weightSum

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值