view的focusable属性改变设置是否可获取光标

注意图中我画的箭头,当时鼠标点击的黑色圈圈的位置,然后按钮出现了按下的效果(黄色的描边)

刚开始看到这种效果很是好奇,不知道是怎么实现的,后来仔细一想,应该是整个啤酒罐是一张图片(ImageView),该图片是布局在三个按钮之上,然后就是最关键的地方,把图片设置为不可获取焦点,也就是android:focusable="false" ,就这样简单的一行,就可以搞定了!

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="button1"
            android:background="@drawable/button_selector"
            />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="button2"
            android:background="@drawable/button_selector"
            />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="button3"
            android:background="@drawable/button_selector"
            />
    </LinearLayout>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/bg2"
        android:focusable="false"
        />
</RelativeLayout>

  button_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <!-- 实心,即填充 -->
            <solid android:color="#8470FF"/>
            <!-- 描边 -->
            <stroke
                android:width="2dp"
                android:color="#FFFF00"/>
            <!-- 圆角 -->
            <corners
                android:radius="5dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>   

    <item>
        <shape>
            <!-- 实心,即填充 -->
            <solid android:color="#8470FF"/>
            <corners
                android:radius="5dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>

  搞定。

时间: 2024-11-07 14:15:55

view的focusable属性改变设置是否可获取光标的相关文章

[BS-16] 尽量将View的Opaque属性设置为YES(默认就是YES)

尽量将View的Opaque属性设置为YES(默认就是YES) UIView控件都有一个Opaque属性,如果不会更改view的透明度,那么应该将其opaque属性设置为YES.为什么要这样做呢?其实是有一定的原因的,一起来看一下.这样设置ios可以让系统以最优的方式来绘制view.opaque属性可以在Interface Builder或代码中设置. 苹果的官方文档对opaque属性有如下解释: This property provides a hint to the drawing syst

js+jquery动态设置/增加/删除/获取元素属性的两种方法集锦对比(动态onclick属性设置+动态title设置)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html140/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>

View的XML 属性大全(官方文档)

XML 属性 属性名称 相关方法 描述 android:accessibilityLiveRegion setAccessibilityLiveRegion(int) Indicates to accessibility services whether the user should be notified when this view changes.  android:accessibilityTraversalAfter setAccessibilityTraversalAfter(in

查看特定View的默认属性值

当我在分析focus.touch事件处理代码时发现,有些属性对代码的逻辑有非常重要的影响,比如clickable.focusable 这些属性.这时我们自然而然的想到,那么这些属性的默认值是什么呢?在工作中我也很多次有同样的疑问.当初我也不是 很清楚,基本都是手动在xml里面设置下.相信和我一样的人还有很多,今天我就告诉大家怎么通过Android源码来快速查看这些默认值. 比如我们经常用到的TextView,感觉上来说,它应该是不能点击的,也就是clickable默认应该是false.接下来,我

Android中focusable属性的妙用——底层按钮的实现

http://www.cnblogs.com/kofi1122/archive/2011/03/22/1991828.html http://www.juziku.com/weizhishi/3077.htm android开发:View中android:focusable属性的作用 设置是否获得焦点.若有requestFocus()被调用时,后者优先处理.注意在表单中想设置某一个如EditText获取焦点,光设置这个是不行的,需要将这个EditText前面的focusable都设置为false

Java重要技术(15)内省之属性改变事件和投票否决事件

1.1. 属性改变事件和投票否决事件 PropertyChangeSupport类为Java Bean支持属性改变事件提供了方便. /** * @Title: EventBean.java * @Package com.test.javatechnology.introspection * @Description: * @author http://www.cnblogs.com/coe2coe/ * @date 2017年3月25日 下午6:02:36 * @version V1.0 */

使用CSS3的appearance属性改变元素的外观

大家都知道每个浏览器对HTML元素渲染都不一样,比如说"button",在chrome和ff中,渲染出来的效果都是不尽相同的.这样一来就有了今天这个思路,利用浏览器的对元素的默认渲染风格,我们可以使用"appearance"属性对任何元素的渲染风格改变,最简单的来说,我要把"a"链接默认显示成"按钮"风格,那么我们可以使用"appearance"设置为"button". "ap

Android中View自定义XML属性详解以及R.attr与R.styleable的区别

为View添加自定义XML属性 Android中的各种Widget都提供了很多XML属性,我们可以利用这些XML属性在layout文件中为Widget的属性赋值. 如下所示: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> 我们可以通过TextView所提供

Scrollbarstyle属性的设置对scrollbar位置的影响

ScrollbarStyl总共有四个属性:insideoverlay,insideInset,outsideinset,outsideoverlay.借助这个属性,可以控制scrollbar的风格和位置.scrollbar可以被插入到一个视图里,也可以被置于一个视图的上层.同样,scrollbar可以被置于view的padding的区域,也可以置于view的padding之外的区域. 分别具体说明四个属性对scrollbar的影响. 1. insideoverlay: 以覆盖的方式将scroll