android中设置控件获得焦点

android中,要使控件获得焦点,需要先setFocus,再requestFocus。

以Button为例:btn.setFocusable(true); btn.setFocusableInTouchMode(true); btn.requestFocus(); btn.requestFocusFromTouch();

//获得失去焦点的监听器btn.setOnFocusChangeListener(new OnFocusChangeListener() {@Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if (hasFocus) {btn_box.setBackgroundResource(R.drawable.book_green); }else {btn_box.setBackgroundResource(R.drawable.book); }} });

如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色;如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了,当然为了美化是要牺牲一些效率的。

2. android:fadingEdge="none" 去掉上边和下边黑色的阴影

3. android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一个图片资源lsitview的每一项之间需要设置一个图片做为间隔

设置Item之间无间隙

android:divider="#00000000" 或者在javaCode中如下定义:listView.setDividerHeight(0);

4. android:listSelector="@color/pink" listView item 选中时的颜色。默认为橙黄底色。

5. android:divider="@drawable/list_driver" 设置分割线的图片资源,如果则只要设置为

android:divider="@drawable/@null" 不想显示分割线

6.android:scrollbars="none" setVerticalScrollBarEnabled(true); 隐藏listView的滚动条

7. android:fadeScrollbars="true" 设置为true就可以实现滚动条的自动隐藏和显示

8. android:transcriptMode="alwaysScroll" 用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。

android:fastScrollEnabled="false" android:fastScrollEnabled = "true" 加快滑动速度

android:drawSelectorOnTop="false" android:scrollingCache="false" ??????????????

android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,,文字就看不到

android:drawSelectorOnTop="false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的

When set to true, the selector will be drawn over the selected item. Otherwise the selector is drawn behind the selected item. The default value is false.

9.在ListView中添加属性:android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track" android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"scrollbar_vertical_track,crollbar_vertical_thumb自定义的xml文件,放在Drawable中,track是指长条,thumb是指短条,然后再xml中定义短条和长条的样式

在项目的开发过程中,需要Listview的Item中包含按钮的效果。在实际开发过,Item中放置按钮后,ListView 单行选择背景颜色变化的效果没有了。

问题原因

    ListView 和 其它能触发点击事件的widget无法一起正常工作的原因是加入其它widget后,ListView的itemclick事件将无法触发,被其它widget的click事件屏蔽。

目前网络上普遍的解决方式

设置1 在Item的xml模板中设置 根布局 属性

android:descendantFocusability="blocksDescendants"

如下:

<RelativeLayout>

android:descendantFocusability="blocksDescendants"

设置2 在按钮控件<ImageButton>中设置属性

android:focusable="false"

补充:这种设置后,点击按钮,整条Item都响应点击效果,显示的效果非我们需要的

我们的需要的效果

1 ListView的Item本身可以选择

2 Item中的按钮可以随意点击,不会干扰Item

实现的过程

在ListView中用图片控件,或者文本控件,来代替图片按钮和普通按钮,并在Adapter中设置点击事件就可以

如例:

.remove(LibListViewAdapter.this.getItem(1));}});

做事的能力往往只能给你一种机会,

android中设置控件获得焦点

相关文章:

你感兴趣的文章:

标签云: