paddingend 最小api_android:paddingend - CSDN
精华内容
参与话题
  • 3.1.1 View与ViewGroup浅析

    万次阅读 2016-05-22 12:43:50
    3.1.1 View与ViewGroup浅析标签: StudyNote 本文声明: 本文由Coder-pig编写,想了解其他内容,可见CoderPig’s Android Study Note——目录 尊重作者劳动成果,未经本人授权,禁止转载!...

    3.1.1 View与ViewGroup浅析

    标签: StudyNote


    本文声明
    本文由Coder-pig编写,想了解其他内容,可见CoderPig’s Android Study Note——目录
    尊重作者劳动成果,未经本人授权,禁止转载!违者必究!
    目录源地址:http://blog.csdn.net/coder_pig/article/details/51348769


    1.简单介绍

      在Android APP中,所有的用户界面元素都是由ViewViewGroup的对象
    构成的。View是绘制在屏幕上的,用户能与之交互的一个对象。而ViewGroup
    则是一个用于存放其他View(和ViewGroup)对象的布局容器!
    (ViewGroup是View的子类!)

      每个界面都是由View和ViewGroup组成的层次树(树形结构),我们可以根据
    自己的需求,设计简单或者复杂的布局(PS:布局越简单性能越好,避免过多的布局嵌套)。

    最顶层的ViewGroup我们有时也把他称为ViewParent对象,所有的交互管理事件都由
    他来统一调度分配。而在Android中我们一般都是在Activity上创建用户界面,除此之外
    Activity提供一些事件处理以及生命周期相关的API,Activity并不做和绘制有关的事情,
    你更多的时候可以把他看作一个界面载体,在Activity中有一个Window抽象类
    (通常由PhoneWindow实现)由他来完成绘制,当我们调用Activity的
    setContentView()方法时,其实调用的就是Window的setContentView()方法。
    而在Window类中有一个DecorView的内部类(FrameLayout扩展类),
    在PhoneWindow调用setContentView()方法的时候会调用一个installDecor()的方法,
    而在该方法中会创建一个DecorView作为整个应用窗口的根View。里面所有的View
    的监听事件由WindowManagerService(WMS)来接收,通过Activity回调对应
    的onClickListener。然后就到如图所示的TitleViewContentView了,
    我们平时调用setContentView设置的就是ContentView这里的布局!


    2.View的绘制流程简述

    View树是遍历绘制的,每绘制一个View的逻辑是:

    Created with Raphaël 2.1.0View的绘制流程是否需要重新测量视图大小(Measure)是否需要重新布局(Layout)是否重新需要绘制(Draw)View绘制完成

    onMeasure(测量)

    首先是测量(Measure) View的大小:
    核心API是:MeasureSpec,int类型,32位,高2位保存SpecMode(测量模式),低30
    位置为SpecSize(测量大小)。
    测量模式有三种:

    • EXACTLY(大小固定):指定大小或者设置为match_parent会使用这个模式。
    • AT_MOST(最大值):指定为warp_content时会使用这个模式,控件大小随
      内容与子空间变化而变化,只要不超过父控件允许的最大尺寸即可。
    • UNSPECIFIED:不做任何限制,View想绘制多大就多大,自定义View才会用到。

    View默认的onMeasure()方法只支持EXACTLY模式,在自定义View时不重写onMeasure()
    方法就只能使用EXACTLY模式,即只支持具体大小与match_parent。如果想支持wrap_content
    或者想支持UNSPECIFIED模式的话,需要重写onMeasure()方法,在onMeasure()方法中,有一个
    setMeasuredDimension(measuredWidth,measureHeight)的方法,将测量后的宽高传入
    即可完成测量工作,贴下简单的模板代码:

        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            setMeasuredDimension(measureWidth(widthMeasureSpec),measureHeight(heightMeasureSpec));
        }
    
        private int measureWidth(int widthMeasureSpec) {
            int result = 0;
            int specMode = MeasureSpec.getMode(widthMeasureSpec);
            int specSize = MeasureSpec.getSize(widthMeasureSpec);
    
            switch (specMode) {
                case MeasureSpec.EXACTLY:
                    result = specSize;
                    break;
                case MeasureSpec.AT_MOST:
                    result = Math.min(200,specSize);    
                    break;
                case MeasureSpec.UNSPECIFIED:
                    result = 300;
                    break;
            }
            return result;
        }

    onLayout(位置)

    确定View的位置,但是要注意一点的是,一般是自定义ViewGroup才会来重写onLayout()
    这个方法,ViewGroup会遍子View,然后调用该子View的layout()方法设置他的坐标值。

    简单示例如下:

        @Override
        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
            for (int i = 0, size = getChildCount(); i < size; i++) {
                View childView = getChildAt(i);
    
                // 获取在onMeasure中计算的视图尺寸
                int measureHeight = childView.getMeasuredHeight();
                int measuredWidth = childView.getMeasuredWidth();
    
                childView.layout(left,0,measuredWidth,measureHeight);
            }
        }

    onDraw(绘制)

    大小和位置都确定了,接着就是绘制了,onDraw()方法为我们提供了一个Canvas画板,
    然后可以调用绘图相关的API对View进行绘制,我们可以在其它地方调用:
    invalidate或者postInvalidate方法,让View进行重绘!


    3.View与ViewGroup属性汇总

    ——摘自:宅学长的博客

    第一类:属性值 true或者 false

    属性 说明
    android:layout_centerHrizontal 水平居中
    android:layout_centerVertical 垂直居中
    android:layout_centerInparent 相对于父元素完全居中
    android:layout_alignParentBottom 贴紧父元素的下边缘
    android:layout_alignParentLeft 贴紧父元素的左边缘
    android:layout_alignParentRight 贴紧父元素的右边缘
    android:layout_alignParentTop 贴紧父元素的上边缘
    android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
    android:layout_alignParentStart 紧贴父元素结束位置开始
    android:layout_alignParentEnd 紧贴父元素结束位置结束
    android:animateLayoutChanges 布局改变时是否有动画效果
    android:clipChildren 定义子布局是否一定要在限定的区域内
    android:clipToPadding 定义布局间是否有间距
    android:animationCache 定义子布局也有动画效果
    android:alwaysDrawnWithCache 定义子布局是否应用绘图的高速缓存
    android:addStatesFromChildren 定义布局是否应用子布局的背景
    android:splitMotionEvents 定义布局是否传递touch事件到子布局
    android:focusableInTouchMode 定义是否可以通过touch获取到焦点
    android:isScrollContainer 定义布局是否作为一个滚动容器 可以调整整个窗体
    android:fadeScrollbars 滚动条自动隐藏
    android:fitsSystemWindows 设置布局调整时是否考虑系统窗口(如状态栏)
    android:visibility 定义布局是否可见
    android:requiresFadingEdge 定义滚动时边缘是否褪色
    android:clickable 定义是否可点击
    android:longClickable 定义是否可长点击
    android:saveEnabled 设置是否在窗口冻结时(如旋转屏幕)保存View的数据
    android:filterTouchesWhenObscured 所在窗口被其它可见窗口遮住时,是否过滤触摸事件
    android:keepScreenOn 设置屏幕常亮
    android:duplicateParentState 是否从父容器中获取绘图状态(光标,按下等)
    android:soundEffectsEnabled 点击或触摸是否有声音效果
    android:hapticFeedbackEnabled 设置触感反馈

    第二类:属性值必须为id的引用名“@id/idname”

    属性 说明
    android:layout_alignBaseline 本元素的文本与父元素文本对齐
    android:layout_below 在某元素的下方
    android:layout_above 在某元素的的上方
    android:layout_toLeftOf 在某元素的左边
    android:layout_toRightOf 在某元素的右边
    android:layout_toStartOf 本元素从某个元素开始
    android:layout_toEndOf 本元素在某个元素结束
    android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
    android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
    android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
    android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
    android:layout_alignStart 本元素与开始的父元素对齐
    android:layout_alignEnd 本元素与结束的父元素对齐
    android:ignoreGravity 指定元素不受重力的影响
    android:layoutAnimation 定义布局显示时候的动画
    android:id 为布局添加ID方便查找
    android:tag 为布局添加tag方便查找与类似
    android:scrollbarThumbHorizontal 设置水平滚动条的drawable
    android:scrollbarThumbVertical 设置垂直滚动条的drawable
    android:scrollbarTrackHorizontal 设置水平滚动条背景(轨迹)的色drawable
    android:scrollbarTrackVertical 设置垂直滚动条背景(轨迹)的色drawable
    android:scrollbarAlwaysDrawHorizontalTrack 设置水平滚动条是否含有轨道
    android:scrollbarAlwaysDrawVerticalTrack 设置垂直滚动条是否含有轨道
    android:nextFocusLeft 设置左边指定视图获得下一个焦点
    android:nextFocusRight 设置右边指定视图获得下一个焦点
    android:nextFocusUp 设置上边指定视图获得下一个焦点
    android:nextFocusDown 设置下边指定视图获得下一个焦点
    android:nextFocusForward 设置指定视图获得下一个焦点
    android:contentDescription 说明
    android:OnClick 点击时从上下文中调用指定的方法

    第三类:属性值为具体的像素值,如30dip,40px,50dp

    属性 说明
    android:layout_width 定义本元素的宽度
    android:layout_height 定义本元素的高度
    android:layout_margin 本元素离上下左右间的距离
    android:layout_marginBottom 离某元素底边缘的距离
    android:layout_marginLeft 离某元素左边缘的距离
    android:layout_marginRight 离某元素右边缘的距离
    android:layout_marginTop 离某元素上边缘的距离
    android:layout_marginStart 本元素里开始的位置的距离
    android:layout_marginEnd 本元素里结束位置的距离
    android:scrollX 水平初始滚动偏移
    android:scrollY 垂直初始滚动偏移
    android:padding 指定布局与子布局的间距
    android:paddingLeft 指定布局左边与子布局的间距
    android:paddingTop 指定布局上边与子布局的间距
    android:paddingRight 指定布局右边与子布局的间距
    android:paddingBottom 指定布局下边与子布局的间距
    android:paddingStart 指定布局左边与子布局的间距与android:paddingLeft相同
    android:paddingEnd 指定布局右边与子布局的间距与android:paddingRight相同
    android:fadingEdgeLength 设置边框渐变的长度
    android:minHeight 最小高度
    android:minWidth 最小宽度
    android:translationX 水平方向的移动距离
    android:translationY 垂直方向的移动距离
    android:transformPivotX 相对于一点的水平方向偏转量
    android:transformPivotY 相对于一点的垂直方向偏转量

    第四类:属性值为Android内置值

    属性 说明
    android:gravity 控件布局方式
    android:layout_gravity 布局方式
    android:persistentDrawingCachehua 定义绘图的高速缓存的持久性
    android:descendantFocusability 控制子布局焦点获取方式 常用于listView的item中包含多个控件点击无效
    android:scrollbars 设置滚动条的状态
    android:scrollbarStyle 设置滚动条的样式
    android:fitsSystemWindows 设置布局调整时是否考虑系统窗口(如状态栏)
    android:scrollbarFadeDuration 设置滚动条淡入淡出时间
    android:scrollbarDefaultDelayBeforeFade 设置滚动条N毫秒后开始淡化,以毫秒为单位
    android:scrollbarSize 设置滚动调大小
    android:fadingEdge 设置拉滚动条时 ,边框渐变的放向
    android:drawingCacheQuality 设置绘图时半透明质量
    android:OverScrollMode 滑动到边界时样式
    android:alpha 设置透明度
    android:rotation 旋转度数
    android:rotationX 水平旋转度数
    android:rotationY 垂直旋转度数
    android:scaleX 设置X轴缩放
    android:scaleY 设置Y轴缩放
    android:verticalScrollbarPosition 设置垂直滚动条的位置
    android:layerType 设定支持
    android:layoutDirection 定义布局图纸的方向
    android:textDirection 定义文字方向
    android:textAlignment 文字对齐方式
    android:importantForAccessibility 设置可达性的重要行
    android:labelFor 添加标签
    android:background 本元素的背景

    展开全文
  • 前言:本文的重头戏在第4部分,主要讲解新手接触Toolbar时遇到的困惑和如何随心所欲地定制Toolbar,例如, . 如何正确的使用Toolbar . xml中设置属性无效 . 导航按钮导致的间距问题 . 自定义标题文字的大小和............... ...

    前言:本文的重头戏在第4部分,主要讲解新手接触Toolbar时遇到的困惑和如何随心所欲地定制Toolbar,例如,

    . 如何正确地使用Toolbar

    . xml中设置属性无效

    . 导航按钮的间距问题

    . 自定义标题文字的大小和颜色

    . 自定义ActoinView的文字大小和颜色

    . 自定义溢出菜单的弹出窗口的背景、弹出位置

    . 标题居中

     ...

    1.Toolbar的组成

    Toolbar是Android5.0(API 21)引入的,取代之前的ActionBar,它的本质是一个View,使用起来更加灵活,功能也更加强大。Toolbar的组成如下:


    ①为Toolbar,继承ViewGroup,是个普通的容器。

    ②为导航按钮,类型为ImageButton,可设置点击事件,用于返回上个页面或者滑出侧滑菜单。

        xml属性:app:navigationIcon 对应方法:setNavigationIcon(Drawable d) ,setNavigationIcon(int resId)

    ③为Logo展示图,类型为ImageView,不响应事件,仅仅作为展示。

        xml属性:app:logo 对应方法:setLogo(Drawable d) ,setLogo(int resId)

    ④为主标题,类型为TextView

        xml属性:app:title 对应方法:setTitle(CharSequence title),setTitle(int resId)

    ⑤为副标题,类型为TextView

        xml属性:app:subtitle 对应方法:setSubtitle(CharSequence title),setSubtitle(int resId)

    ⑥为普通子View,标题和ActionMenuView之间是留给我们添加子View的区域

    ⑦为ActionMenuView,负责管理选项菜单

    2.在布局文件中使用Toolbar

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="coder.zzq.toolbardemo.MainActivity">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:navigationIcon="@drawable/nav_icon"
            app:logo="@drawable/logo_icon"
            app:title="主标题"
            app:subtitle="副标题">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="16sp"
                android:padding="4dp"
                android:text="普通子View"
                android:id="@+id/free_child"
                android:layout_gravity="center"
                android:background="#ffffff"/>
        </android.support.v7.widget.Toolbar>
    </LinearLayout>

    Toolbar的高度我们使用当前主题下ActionBar的高度,Toolbar默认没有背景,通常使用@color/colorPrimary

    3.在代码中处理Toolbar

            //像获取普通控件那样获取Toolbar
            mToolbar = (Toolbar) findViewById(R.id.toolbar);
    
            //以下四个方法分别用来设置导航按钮、Logo、主标题和副标题
            //如果xml文件中没有设置这些属性或者想覆盖xml文件中设置的值可调用这些方法
            mToolbar.setNavigationIcon(R.drawable.nav_icon);
            mToolbar.setLogo(R.drawable.logo_icon);
            mToolbar.setTitle("主标题");
            mToolbar.setSubtitle("副标题");
    
            //设置导航按钮的点击事件
            mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, "点击了导航按钮!", Toast.LENGTH_SHORT).show();
                }
            });
            //生成选项菜单
            mToolbar.inflateMenu(R.menu.action_menu_main);
            //设置选项菜单的菜单项的点击事件
            mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    Toast.makeText(MainActivity.this, "点击了菜单项" + item.getTitle(), Toast.LENGTH_SHORT).show();
                    return true;
                }
            });
    
            //获取选项菜单,可增加,减少菜单项
            Menu menu = mToolbar.getMenu();
            menu.add("测试菜单项");
            menu.removeItem(R.id.item_04);
    
            //设置溢出菜单的icon,显示、隐藏溢出菜单弹出的窗口
            mToolbar.setOverflowIcon(ContextCompat.getDrawable(this,android.R.drawable.ic_menu_more));
            mToolbar.showOverflowMenu();
            mToolbar.dismissPopupMenus();

    选项菜单如下:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item android:title="item_01"
            android:id="@+id/item_01"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="always"/>
        <item android:title="item_02"
            android:id="@+id/item_02"
            />
        <item android:title="item_03"
            android:id="@+id/item_03"/>
        <item android:title="item_04"
            android:id="@+id/item_04"/>
    </menu>


    看一下运行效果:



    4.解决Toolbar中的困惑以及定制Toolbar

    ①如何正确地使用Toolbar

    Toolbar是Android5.0(API 21)引入的,为了兼容低版本,我们不要使用android.widget.Toolbar,而是android.support.v7.widget.Toolbar。v7库最低兼容API  7,咱们一般的应用兼容到API 15足够,即便是开发第三方SDK,一般也只兼容到API 10,所以我们完全不用担心低版本的兼容问题。

    Toolbar也可以如此使用,转化成ActionBar

            setSupportActionBar(mToolbar);
    这样一来,选项菜单就得按照之前ActionBar的方式设置,在Activity中重写下列方法,

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.action_menu_main,menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            Toast.makeText(MainActivity.this, "点击了菜单项" + item.getTitle(), Toast.LENGTH_SHORT).show();
            return true;
        }
    Toolbar的出现就是为了取代ActionBar,所以我们强烈建议不要按上述方式使用Toolbar,将其与ActionBar纠缠在一起。Toolbar无论在灵活上、功能上都把AcionBar甩好几条街。交织在一起,使用不当的话,反而引入稀奇古怪的Bug,真是得不偿失。

    .xml中设置属性无效

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            android:navigationIcon="@drawable/nav_icon"
            android:logo="@drawable/logo_icon"
            android:title="主标题"
            android:subtitle="副标题"/>
    上面的设置中,id,layout_width,layout_height,background有效,而后四个属性无效。解决办法是将后四个属性的命名空间改成app。

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:navigationIcon="@drawable/nav_icon"
            app:logo="@drawable/logo_icon"
            app:title="主标题"
            app:subtitle="副标题"/>
    这是为什么?

    前四个属性是非兼容库中SDK本身就有的属性,他们的命名空间是android,而后四个属性是Toolbar的专有属性,我们使用的是支持库中的Toolbar,所以要用自定义命名空间,所以需要使用app。

    ③导航按钮的左右间距问题

    Toolbar的布局规则:默认状况下,上下左右的内边距皆为0,导航按钮和选项菜单分别紧靠Toolbar的左右两端,其他内容插入他们二者之间。

    我们去主题中看一下导航按钮的默认样式,

        <style name="Base.Widget.AppCompat.Toolbar.Button.Navigation" parent="android:Widget">
            <item name="android:minWidth">56dp</item>
            <item name="android:scaleType">center</item>
        </style>
    显示导航图标的ImageButton本身是紧靠Toolbar左边缘,无外边距的,不过它的最小宽度是56dp,缩放类型为只居中不缩放,所以在视觉效果上,跟Toolbar边缘有一定距离。有的时候这种距离并不合适,我们可以这样改变它。

    第一步,自定义一个样式

        <style name="toolbar_nav_button" parent="Widget.AppCompat.Toolbar.Button.Navigation">
            <item name="android:minWidth">0dp</item>
            <item name="android:paddingLeft">16dp</item>
            <item name="android:paddingRight">16dp</item>
        </style>

    第二步,在主题中指定toolbarNavigationButtonStyle使用上面定义的样式

        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="toolbarNavigationButtonStyle">@style/toolbar_nav_button</item>
        </style>

    我们把ImageButton的最小宽度设为0。如果美工切给你的图本身周边有空白的透明区域,你可以把左右内边距设置为0或其他合适的值进行调整。如果没有,设置为16dp即可。

    不要通过给ImageButton设置外边距的方式形成间距,虽然视觉效果一样,但是导航按钮是响应用户点击的,内边距依然是View的一部分,依然在响应触碰的范围内,这样用户的体验较好,避免图标过小时,用户“不易”触发点击事件。

    其他内容插入导航按钮和选项菜单之间时,受四个xml属性的影响:contentInsetStart、contentInsetStartWithNavigation、contentInsetEnd、contentInsetEndWithActions;

        <style name="Base.Widget.AppCompat.Toolbar" parent="android:Widget">
            <item name="contentInsetStart">16dp</item>
            <item name="contentInsetStartWithNavigation">72dp</item>
        </style>

    contentInsetStart默认值为16dp,contentInsetStartWithNavigation默认值为72dp,其他两个属性的默认值为0。

    导航按钮存在,内容插入的左间距取contentInsetStart和contentInsetStartWithNavigation的最大值,否则取contentInsetStart的值。

    也就是说contentInsetStartWithNavigation只在导航按钮存在时有效,contentInsetStart无论是否存在都有效。

    同理,选项菜单存在,内容插入的右间距取contentInsetEnd和contentInsetEndWithActions的最大值,否则取contentInsetEnd的值。

    也就是说,contentInsetEndWithActions只在选项菜单存在时有效,contentInsetEnd无论是否存在都有效。

    所以,如果改变导航按钮右间距,只需如此设置,

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:navigationIcon="@drawable/nav_icon"
            app:logo="@drawable/logo_icon"
            app:title="主标题"
            app:subtitle="副标题"
            app:contentInsetStart="0dp"
            app:contentInsetStartWithNavigation="0dp"
            />
    因为前面我们已经给导航按钮设置了16dp的右内边距,所以这里设为0dp就可以了。

    ④.标题文字的大小和颜色

    以主标题为例,如果仅需改变字体颜色,可以通过app:titleTextColor="#ffffff"设置。如果需要改变大小,自定义一个样式,

        <style name="toolbar_title_style">
            <item name="android:textColor">#ffffff</item>
            <item name="android:textSize">20sp</item>
        </style>

    然后设置app:titleTextAppearance="@style/toolbar_title_style"。倘若app:titleTextColor与app:titleTextAppearance中均指定了字体颜色,前者会覆盖后者。另外,主题中title上下左右均有4pd的外边距,可通过app:titleMargin,app:titleMarginStart,app:titleMarginEnd,app:titleMarginTop,app:titleMarginBottom来改变。主题中的默认值如下,

        <style name="Base.Widget.AppCompat.Toolbar" parent="android:Widget">
            <item name="titleMargin">4dp</item>
        </style>

    ⑤.定制Toolbar选项菜单项

    选项菜单项在Toolbar上显示时,有可能是图标,也有可能是文字,我们可以自定义他们的字体大小,颜色以及他们之间的间距。先看看它的默认样式,

        <style name="Base.Widget.AppCompat.ActionButton" parent="RtlUnderlay.Widget.AppCompat.ActionButton">
            <item name="android:minWidth">48dp</item>
            <item name="android:minHeight">48dp</item>
            <item name="android:scaleType">center</item>
            <item name="android:gravity">center</item>
            <item name="android:maxLines">2</item>
            <item name="textAllCaps">true</item>
        </style>
        <style name="RtlUnderlay.Widget.AppCompat.ActionButton" parent="android:Widget">
            <item name="android:paddingLeft">12dp</item>
            <item name="android:paddingRight">12dp</item>
        </style>

    values-v21

        <style name="Widget.Material.ActionButton">
            <item name="paddingStart">12dp</item>
            <item name="paddingEnd">12dp</item>
        </style>

    自定义一个样式,

        <style name="toolbar_action_button_style" parent="@style/Widget.AppCompat.ActionButton">
            <item name="android:textAllCaps">false</item>
            <item name="android:textSize">16sp</item>
            <item name="android:minWidth">0dp</item>
            <item name="android:paddingLeft">5dp</item>
            <item name="android:paddingRight">5dp</item>
            <item name="android:paddingStart">5dp</item>
            <item name="android:paddingEnd">5dp</item>
        </style>
    注意,在API 21以下,资源文件定义了paddingLeft和paddingRight,API 21及以上定义了paddingStart和paddingEnd,这里为了适配同时指定了四个属性。字体颜色在这里指定是无效的,需在主题中指定android:actionMenuTextColor的值。

    在主题中使用该样式,并指定android:actionMenuTextColor的值,

        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="toolbarNavigationButtonStyle">@style/toolbar_nav_button</item>
            <item name="android:actionButtonStyle">@style/toolbar_action_button_style</item>
            <item name="android:actionMenuTextColor">#ffffff</item>
        </style>
    ⑥.溢出按钮的样式

    溢出按钮的样式,通过在主题中设置android:actionOverflowButtonStyle来指定,不过一般我们不会自定义它的样式,另外,通过代码可以替换溢出按钮的图标,setOverflowIcon(Drawable d)

        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="toolbarNavigationButtonStyle">@style/toolbar_nav_button</item>
            <item name="android:actionButtonStyle">@style/toolbar_action_button_style</item>
            <item name="android:actionMenuTextColor">#ffffff</item>
            <item name="android:actionOverflowButtonStyle">@style/toolbar_overflow_button_style</item>
        </style>

        <style name="toolbar_overflow_button_style" parent="Widget.AppCompat.Light.ActionButton.Overflow">
    
        </style>

    ⑦.自定义弹出的溢出菜单的背景、弹出位置

    看看默认样式,

        <style name="Base.Widget.AppCompat.Light.PopupMenu.Overflow">
            <item name="overlapAnchor">true</item>
            <item name="android:dropDownHorizontalOffset">-4dip</item>
        </style>

    自定义样式,

        <style name="toolbar_action_menu_overflow" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
            <!-- 是否覆盖锚点,为true则盖住Toolbar -->
            <item name="overlapAnchor">false</item>
            <!-- 弹出层水平方向上的偏移,即距离屏幕左边的距离,负值会导致右边出现空隙 -->
            <item name="android:dropDownHorizontalOffset">-2dp</item>
            <!-- 弹出层垂直方向上的偏移,即在竖直方向上距离Toolbar的距离,值为负则会盖住Toolbar -->
            <item name="android:dropDownVerticalOffset">4dp</item>
            <!-- 弹出层背景颜色 -->
            <item name="android:popupBackground">@color/colorPrimary</item>
        </style>
    在主题中指定使用该样式,

        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="toolbarNavigationButtonStyle">@style/toolbar_nav_button</item>
            <item name="android:actionButtonStyle">@style/toolbar_action_button_style</item>
            <item name="android:actionMenuTextColor">#ffffff</item>
            <item name="android:actionOverflowButtonStyle">@style/toolbar_overflow_button_style</item>
            <item name="actionOverflowMenuStyle">@style/toolbar_action_menu_overflow</item>
        </style>

    字体的颜色和大小通过Toolbar的xml属性app:popupTheme="@style/toolbar_pop_theme"指定

        <style name="toolbar_pop_theme">
            <item name="android:textColor">#ffffff</item>
            <item name="android:textSize">16sp</item>
        </style>


    ⑧标题居中问题

    很少有产品经理设计标题居中的了,但如果有,可以如此解决,

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:navigationIcon="@drawable/nav_icon"
            app:contentInsetStart="0dp"
            app:contentInsetStartWithNavigation="0dp"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="标题"
                android:textColor="#ffffff"
                android:textSize="20sp"
                android:layout_gravity="center"/>
            </android.support.v7.widget.Toolbar>
    效果如下,


    5.最后送上所有源码

    package coder.zzq.toolbardemo;
    
    import android.os.Bundle;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Toast;
    
    import programmer.zzq.toolbardemo.R;
    
    public class MainActivity extends AppCompatActivity {
        private Toolbar mToolbar;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //像获取普通控件那样获取Toolbar
            mToolbar = (Toolbar) findViewById(R.id.toolbar);
    
            //以下四个方法分别用来设置导航按钮、Logo、主标题和副标题
            //如果xml文件中没有设置这些属性或者想覆盖xml文件中设置的值可调用这些方法
            mToolbar.setNavigationIcon(R.drawable.nav_icon);
            mToolbar.setLogo(R.drawable.logo_icon);
            mToolbar.setTitle("主标题");
            mToolbar.setSubtitle("副标题");
    
            //设置导航按钮的点击事件
            mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, "点击了导航按钮!", Toast.LENGTH_SHORT).show();
                }
            });
    
            //生成选项菜单
            mToolbar.inflateMenu(R.menu.action_menu_main);
            //设置选项菜单的菜单项的点击事件
            mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    Toast.makeText(MainActivity.this, "点击了菜单项" + item.getTitle(), Toast.LENGTH_SHORT).show();
                    return true;
                }
            });
    
            //获取选项菜单,可增加,减少菜单项
            Menu menu = mToolbar.getMenu();
            menu.add("测试菜单项");
            menu.removeItem(R.id.item_04);
    
            //设置溢出菜单的icon,显示、隐藏溢出菜单弹出的窗口
            mToolbar.setOverflowIcon(ContextCompat.getDrawable(this,android.R.drawable.ic_menu_more));
            mToolbar.showOverflowMenu();
            mToolbar.dismissPopupMenus();
            
        }
    
    
    }
    布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="coder.zzq.toolbardemo.MainActivity">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:navigationIcon="@drawable/nav_icon"
            app:logo="@drawable/logo_icon"
            app:title="主标题"
            app:subtitle="副标题"
            app:contentInsetStart="0dp"
            app:contentInsetStartWithNavigation="0dp"
            app:titleTextAppearance="@style/toolbar_title_style"
            app:subtitleTextAppearance="@style/toolbar_subtitle_style"
            app:popupTheme="@style/toolbar_pop_theme"
            />
    </LinearLayout>
    

    菜单资源

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/item_01"
            android:title="item_01"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="always"/>
        <item
            android:id="@+id/item_02"
            android:title="item_02"
            app:showAsAction="always"
            />
        <item
            android:id="@+id/item_03"
            android:title="item_03"/>
        <item
            android:id="@+id/item_04"
            android:title="item_04"/>
    </menu>
    样式资源

    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="toolbarNavigationButtonStyle">@style/toolbar_nav_button</item>
            <item name="android:actionButtonStyle">@style/toolbar_action_button_style</item>
            <item name="android:actionMenuTextColor">#ffffff</item>
            <item name="android:actionOverflowButtonStyle">@style/toolbar_overflow_button_style</item>
            <item name="actionOverflowMenuStyle">@style/toolbar_action_menu_overflow</item>
        </style>
    
        <style name="toolbar_nav_button" parent="@style/Widget.AppCompat.Toolbar.Button.Navigation">
            <item name="android:minWidth">0dp</item>
            <item name="android:paddingLeft">16dp</item>
            <item name="android:paddingRight">16dp</item>
        </style>
    
        <style name="toolbar_title_style" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
            <item name="android:textColor">#ffffff</item>
            <item name="android:textSize">20sp</item>
        </style>
    
        <style name="toolbar_subtitle_style" parent="TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
            <item name="android:textColor">#ffffff</item>
            <item name="android:textSize">16sp</item>
        </style>
    
        <style name="toolbar_action_button_style" parent="@style/Widget.AppCompat.ActionButton">
            <item name="android:textAllCaps">false</item>
            <item name="android:textSize">16sp</item>
            <item name="android:minWidth">0dp</item>
            <item name="android:paddingLeft">5dp</item>
            <item name="android:paddingRight">5dp</item>
            <item name="android:paddingStart">5dp</item>
            <item name="android:paddingEnd">5dp</item>
        </style>
    
        <style name="toolbar_overflow_button_style" parent="Widget.AppCompat.Light.ActionButton.Overflow">
    
        </style>
    
        <style name="toolbar_action_menu_overflow" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
            <!-- 是否覆盖锚点,为true则盖住Toolbar -->
            <item name="overlapAnchor">false</item>
            <!-- 弹出层水平方向上的偏移,即距离屏幕左边的距离,负值会导致右边出现空隙 -->
            <item name="android:dropDownHorizontalOffset">-2dp</item>
            <!-- 弹出层垂直方向上的偏移,即在竖直方向上距离Toolbar的距离,值为负则会盖住Toolbar -->
            <item name="android:dropDownVerticalOffset">4dp</item>
            <!-- 弹出层背景颜色 -->
            <item name="android:popupBackground">@color/colorPrimary</item>
        </style>
    
    
        <style name="toolbar_pop_theme">
            <item name="android:textColor">#ffffff</item>
            <item name="android:textSize">16sp</item>
        </style>
    
    
    </resources>

    最终的运行效果:









    后期追加:

    有的时候,我们想要显示溢出菜单项的图标,就像微信这样:


    通过一行代码即可实现:

            ((MenuBuilder) mToolbar.getMenu()).setOptionalIconsVisible(true);

    效果图:


    布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="coder.zzq.toolbardemo.MainActivity">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:titleTextColor="#ffffff"
            app:title="显示溢出菜单项的图标"
            app:popupTheme="@style/toolbar_pop_theme"/>
    </LinearLayout>
    菜单资源:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item android:id="@+id/item_01"
        android:title="item_01"
            android:icon="@android:drawable/ic_menu_add"
            />
        <item android:id="@+id/item_02"
            android:title="item_02"
            android:icon="@android:drawable/ic_menu_call"
            />
        <item android:id="@+id/item_03"
            android:title="item_03"
            android:icon="@android:drawable/ic_menu_camera"
            />
        <item android:id="@+id/item_04"
            android:title="item_04"
            android:icon="@android:drawable/ic_menu_help"
            />
    </menu>
    主题设置:

    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="actionOverflowMenuStyle">@style/action_overflow_menu</item>
        </style>
    
    
        <style name="action_overflow_menu" parent="@style/Widget.AppCompat.Light.PopupMenu.Overflow">
            <!--设置溢出菜单背景-->
            <item name="android:popupBackground">@color/colorPrimary</item>
            <!--不覆盖Toolbar-->
            <item name="overlapAnchor">false</item>
            <item name="android:dropDownVerticalOffset">4dp</item>
        </style>
    
    
        <style name="toolbar_pop_theme">
            <!--文字颜色-->
            <item name="android:textColor">#ffffff</item>
            <!--文字大小-->
            <item name="android:textSize">18sp</item>
            <!--文字风格-->
            <item name="android:textStyle">bold|italic</item>
            <!--图标与文字的间距-->
            <item name="android:drawablePadding">10dp</item>
        </style>
    
    </resources>
    



    展开全文
  • android layout布局属性

    万次阅读 2014-01-13 11:13:23
    参考:...   第一类:属性值 true或者 false  android:layout_centerHrizontal 水平居中 ... android:layout_centerVertical 垂直居中 ... android:layout_c

    参考:http://blog.csdn.net/msmile_my/article/details/9018775

     

    第一类:属性值 true或者 false
               android:layout_centerHrizontal 水平居中

          android:layout_centerVertical 垂直居中
          android:layout_centerInparent 相对于父元素完全居中
          android:layout_alignParentBottom 贴紧父元素的下边缘
          android:layout_alignParentLeft 贴紧父元素的左边缘
          android:layout_alignParentRight 贴紧父元素的右边缘
          android:layout_alignParentTop 贴紧父元素的上边缘
          android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

               android:layout_alignParentStart紧贴父元素结束位置开始

               android:layout_alignParentEnd紧贴父元素结束位置结束

               android:animateLayoutChanges布局改变时是否有动画效果

               android:clipChildren定义子布局是否一定要在限定的区域内

               android:clipToPadding定义布局间是否有间距

               android:animationCache定义子布局也有动画效果

               android:alwaysDrawnWithCache定义子布局是否应用绘图的高速缓存

               android:addStatesFromChildren定义布局是否应用子布局的背景

               android:splitMotionEvents定义布局是否传递touch事件到子布局

               android:focusableInTouchMode定义是否可以通过touch获取到焦点

               android:isScrollContainer定义布局是否作为一个滚动容器 可以调整整个窗体

               android:fadeScrollbars滚动条自动隐藏

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

               android:visibility定义布局是否可见

               android:requiresFadingEdge定义滚动时边缘是否褪色

               android:clickable定义是否可点击

               android:longClickable定义是否可长点击

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

               android:filterTouchesWhenObscured所在窗口被其它可见窗口遮住时,是否过滤触摸事件

               android:keepScreenOn设置屏幕常亮

               android:duplicateParentState是否从父容器中获取绘图状态(光标,按下等)

               android:soundEffectsEnabled点击或触摸是否有声音效果

               android:hapticFeedbackEnabled设置触感反馈


            第二类:属性值必须为id的引用名@id/id-name

             android:layout_alignBaseline 本元素的文本与父元素文本对齐

        android:layout_below 在某元素的下方
        android:layout_above 在某元素的的上方
        android:layout_toLeftOf 在某元素的左边
        android:layout_toRightOf 在某元素的右边

             android:layout_toStartOf本元素从某个元素开始

             android:layout_toEndOf本元素在某个元素结束

        android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
        android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
        android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
        android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

             android:layout_alignStart本元素与开始的父元素对齐

             android:layout_alignEnd本元素与结束的父元素对齐

             android:ignoreGravity 指定元素不受重力的影响

             android:layoutAnimation定义布局显示时候的动画

             android:id 为布局添加ID方便查找

             android:tag为布局添加tag方便查找与类似

             android:scrollbarThumbHorizontal设置水平滚动条的drawable。

             android:scrollbarThumbVertical设置垂直滚动条的drawable

             android:scrollbarTrackHorizontal设置水平滚动条背景(轨迹)的色drawable

             android:scrollbarTrackVertical设置垂直滚动条背景(轨迹)的色drawable

             android:scrollbarAlwaysDrawHorizontalTrack 设置水平滚动条是否含有轨道

             android:scrollbarAlwaysDrawVerticalTrack 设置垂直滚动条是否含有轨道

             android:nextFocusLeft 设置左边指定视图获得下一个焦点

             android:nextFocusRight设置右边指定视图获得下一个焦点

             android:nextFocusUp设置上边指定视图获得下一个焦点

             android:nextFocusDown设置下边指定视图获得下一个焦点

             android:nextFocusForward设置指定视图获得下一个焦点

             android:contentDescription 说明

             android:OnClick 点击时从上下文中调用指定的方法

             

        第三类:属性值为具体的像素值,如30dip40px,50dp

          android:layout_width定义本元素的宽度

            android:layout_height定义本元素的高度

          android:layout_margin 本元素离上下左右间的距离

       android:layout_marginBottom 离某元素底边缘的距离
       android:layout_marginLeft 离某元素左边缘的距离
       android:layout_marginRight 离某元素右边缘的距离
       android:layout_marginTop 离某元素上边缘的距离

            android:layout_marginStart本元素里开始的位置的距离

            android:layout_marginEnd本元素里结束位置的距离

            android:scrollX水平初始滚动偏移

            android:scrollY垂直初始滚动偏移

            android:background本元素的背景

            android:padding指定布局与子布局的间距

            android:paddingLeft指定布局左边与子布局的间距

            android:paddingTop指定布局上边与子布局的间距

            android:paddingRight指定布局右边与子布局的间距

            android:paddingBottom指定布局下边与子布局的间距

            android:paddingStart指定布局左边与子布局的间距与android:paddingLeft相同

            android:paddingEnd指定布局右边与子布局的间距与android:paddingRight相同

            android:fadingEdgeLength 设置边框渐变的长度

            android:minHeight最小高度

            android:minWidth最小宽度

            android:translationX 水平方向的移动距离

            android:translationY垂直方向的移动距离

            android:transformPivotX相对于一点的水平方向偏转量

            android:transformPivotY相对于一点的垂直方向偏转量


            第四类:属性值问Android内置值的

            android:gravity控件布局方式

            android:layout_gravity布局方式

            android:persistentDrawingCachehua定义绘图的高速缓存的持久性   

            android:descendantFocusability控制子布局焦点获取方式 常用于listView的item中包含多个控件 点击无效

            android:scrollbars设置滚动条的状态

            android:scrollbarStyle设置滚动条的样式

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

            android:scrollbarFadeDuration设置滚动条淡入淡出时间

            android:scrollbarDefaultDelayBeforeFade设置滚动条N毫秒后开始淡化,以毫秒为单位。

            android:scrollbarSize设置滚动调大小

            android:fadingEdge 设置拉滚动条时 ,边框渐变的放向

            android:drawingCacheQuality设置绘图时半透明质量

            android:OverScrollMode滑动到边界时样式

            android:alpha设置透明度

            android:rotation旋转度数

            android:rotationX水平旋转度数

            android:rotationY垂直旋转度数

            android:scaleX设置X轴缩放

            android:scaleY设置Y轴缩放

            android:verticalScrollbarPosition摄者垂直滚动条的位置

            android:layerType设定支持

            android:layoutDirection定义布局图纸的方向

            android:textDirection定义文字方向

            android:textAlignment文字对齐方式

            android:importantForAccessibility设置可达性的重要行

            android:labelFor添加标签

    ============================================================================================

    为了更精确地控制应用程序在UI上的文字书写顺序(从左到右,或者从右到左),Android 4.2 引入了如下的API:

    android:layoutDirection —该属性设置组件的布局排列方向

    android:textDirection — 该属性设置组件的文字排列方向

    android:textAlignment — 该属性设置文字的对齐方式

    getLayoutDirectionFromLocale() —该方法用于获取指定地区的惯用布局方式

    在使用从右到左的排列方式时,你甚至创建自定义的布局方式,可绘制对象,以及其他资源。仅仅是简单地使用资源匹配器“ldrtl”对你的资源进行一下标识,你就可以把资源定义为“从右到左方向的资源”。在调试和优化从右到左的布局方面,HierarchyViewer目前支持对start/end属性,布局方向,文字方向,文字对齐方式等所有信息的层次化显示。

     

    展开全文
  • View public class View extends Object implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource ...API level 1   java.lang.Object  ↳ android.view.View   已知直接子类
    Android API 25 (Android 7.1.1)
    

    View

    public class View

    extends Object implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource

    Added in API level 1

     

    java.lang.Object

       ↳android.view.View

     

    已知直接子类:

    AnalogClock

    ImageView

    KeyboardView

    MediaRouteButton

    ProgressBar

    Space

    SurfaceView

    TabItem

    TextView

    TextureView

    ViewGroup

    ViewStub

     

    【概述】

    此类表示用户界面组件的基本构建块。视图在屏幕上占据一个矩形区域,负责绘图和事件处理。 View是窗口小部件的基类,用于创建交互式UI组件(按钮,文本字段等)。ViewGroup子类是布局的基类,它是保存其他视图(或其他ViewGroup)并定义其布局属性的不可见容器。

     

    【内部类】

    类     View.AccessibilityDelegate

    这个类代表一个委托,可以在一个View中注册,通过组合而不是通过继承来增强辅助功能。

    类     View.BaseSavedState

    需要在onSaveInstanceState()中保存和恢复自己的状态的派生类的基类。 

    类     View.DragShadowBuilder

    创建系统在拖放操作期间显示的图像。 

    类     View.MeasureSpec

    MeasureSpec封装了从父节点传递给子节点的布局要求。

    接口   View.OnApplyWindowInsetsListener

    用于以自定义方式在视图上应用窗口插入的侦听器。

    接口   View.OnAttachStateChangeListener

    当此视图从其窗口附加或分离时要调用的回调的接口定义。

    接口   View.OnClickListener

    单击视图时调用的回调的接口定义。

    接口   View.OnContextClickListener

    在视图被上下文单击时调用的回调的接口定义。

    接口   View.OnCreateContextMenuListener

    当正在构建此视图的上下文菜单时要调用的回调的接口定义。

    接口   View.OnDragListener

    将拖动分派到此视图时调用的回调的接口定义。

    接口   View.OnFocusChangeListener

    当视图的焦点状态更改时调用的回调的接口定义。

    接口   View.OnGenericMotionListener

    将通用运动事件分派到此视图时调用的回调的接口定义。

    接口   View.OnHoverListener

    将悬停事件分派到此视图时要调用的回调的接口定义。

    接口   View.OnKeyListener

    将硬件键事件分派到此视图时调用的回调的接口定义。

    接口   View.OnLayoutChangeListener

    当视图的布局边界由于布局处理而更改时要调用的回调的接口定义。

    接口   View.OnLongClickListener

    当视图被单击并保持时要调用的回调的接口定义。

    接口   View.OnScrollChangeListener

    当视图的滚动XY位置改变时调用的回调的接口定义。

    接口   View.OnSystemUiVisibilityChangeListener

    状态栏更改可见性时要调用的回调的接口定义。

    接口   View.OnTouchListener

    将触摸事件分派到此视图时调用的回调的接口定义。

     

    【XML属性】

    android:  accessibilityLiveRegion

    API 19

    关联方法:setAccessibilityLiveRegion(int mode)

    属性说明:辅助功能 当视图更改时是否应通知用户。

    可以是整型值(integer),如:100

    也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。

    还可以引用一个资源(格式:@[package:]type:name)或者是包含这种类型值的主题属性(格式:?[package][type:]name)。

    可以是下列常量值之一:

    none      0  ACCESSIBILITY_LIVE_REGION_NONE      不通知。默认。

    polite    1  ACCESSIBILITY_LIVE_REGION_POLITE    通知

    assertive 2  ACCESSIBILITY_LIVE_REGION_ASSERTIVE 中断语音立即声明

    对应的全局属性资源符号是accessibilityLiveRegion

     

    设置视图的活动区域模式。这向可访问性服务指示它们是否应当自动通知用户关于视图的内容描述或文本的改变,或者视图的孩子的内容描述或文本(如果适用的话)。

    例如,在具有显示“密码不正确”通知的TextView的登录屏幕中,该视图应标记为具有

    ACCESSIBILITY_LIVE_REGION_POLITE模式的活动区域。

    要停用此数据视图的更改通知,请使用ACCESSIBILITY_LIVE_REGION_NONE。 这是大多数视图的默认活动区域模式。

    要指示应通知用户有更改,请使用ACCESSIBILITY_LIVE_REGION_POLITE

    如果视图的更改应中断正在进行的语音并立即通知用户,请使用ACCESSIBILITY_LIVE_REGION_ASSERTIVE

     


    android:  accessibilityTraversalAfter

    API 22

    关联方法:setAccessibilityTraversalAfter(int afterId)

    属性说明:辅助功能设置在辅助功能遍历中访问此视图的之后视图的ID。 屏幕阅读器必须在此视图的内容之前访问另一视图的内容。

    对应的全局属性资源符号是accessibilityTraversalAfter

     

    例如,如果视图B被设置为在视图A之后,则屏幕阅读器将在遍历B的整个内容之前遍历A的整个内容,不论其正在使用什么遍历策略。

    没有指定前/后关系的视图按屏幕阅读器确定的顺序遍历。

    将此视图设置为对辅助功能不重要的视图之后,或者此视图对于辅助功能不重要。则此属性将不起作用,因为屏幕阅读器会忽略不重要的视图。

     


    android:  accessibilityTraversalBefore

    API 22

    关联方法:setAccessibilityTraversalBefore(int beforeId)

    属性说明:辅助功能设置在辅助功能遍历中访问此视图的之前视图的ID。 屏幕阅读器必须在此视图的内容之前访问此视图的内容。

    对应的全局属性资源符号是accessibilityTraversalAfter

     

    例如,如果视图B被设置为在视图A之前,则屏幕阅读器将在遍历A的整个内容之前遍历B的整个内容,不论其正在使用什么遍历策略。

    没有指定前/后关系的视图按屏幕阅读器确定的顺序遍历。

    将此视图设置为对辅助功能不重要的视图之后,或者此视图对于辅助功能不重要。则此属性将不起作用,因为屏幕阅读器会忽略不重要的视图。

     


    android:  alpha

    API 11

    关联方法:setAlpha(float alpha)

    属性说明:视图透明度,值在0-1之间。0为完全透明,1为完全不透明。

    必须是浮点值(float),如:1.2

    也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是alpha

     

    注意:将alpha设置为半透明值(0 <alpha <1)可能会产生重大的性能影响,特别是对于大视图。最好使用alpha属性保守和瞬态,如在动画消失的情况。

    对于具有频繁变化的alpha的视图,例如在渐变动画期间,强烈建议出于性能原因,覆盖hasOverlappingRendering()以返回false(如果适当),或者在动画持续时间的视图上设置图层类型。在版本M及以下版本中,使用alpha渲染未分层视图的默认路径可能会增加渲染成本的多毫秒,即使对于简单或小视图也是如此。从M开始,LAYER_TYPE_HARDWARE自动应用于呈现级别的视图。

    如果这个视图覆盖onSetAlphaint)返回true,那么这个视图负责应用不透明度本身。

    在版本LOLLIPOP_MR1及以下版本中,请注意,如果视图由图层支持并与图层油漆相关联,那么将Alpha值设置为小于1.0将取代图层油漆的Alpha值。

    M开始,设置一个半透明的alpha值将剪辑视图到其边界,除非视图从hasOverlappingRendering()返回false

     


    android:  background

    API 1

    关联方法:setBackgroundResource(int resid)

    属性说明设置视图背景。可以是完整的drawable资源(比如png图、.9图、xml描述状态列表等等)或者是纯色。

    可以引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    可以是颜色值(color),格式#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。

    对应的全局属性资源符号是background

     

    setBackgroundResource (int resid)

    API 1

    将背景设置为给定资源。资源应该引用一个Drawable对象或0来删除背景。


    setBackgroundColor (int color)

    API 1

    给视图设置背景色。


    setBackgroundDrawable (Drawable background)

    API 1-API16

    API 16弃用,使用setBackground()代替


    setBackground(Drawable background)

    API 16

    给视图设置背景,或删除背景。

    如果背景有填充,此视图的填充设置为背景的填充。

    但是,当删除背景时,不会触摸此view的填充。如需要填充,请使用setPaddingintintintint

     


    android:  backgroundTint

    API 21

    关联方法:setBackgroundTintList(ColorStateList tint) 

    属性说明:设置背景色调。

    必须是颜色值(color),格式#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是backgroundTint

    tint可以为null以清除色调。

     

    如果view没有背景,设置backgroudTint无效。

    getResource().getColorStateList(R.color.色值);

    ColorStateList对象可以在XML中定义,像color一样使用,它能根据它应用到的View对象的状态实时改变颜色。

    <selector xmlns:android="http://schemas.android.com/apk/res/android" >//根元素。包含一个或多个<item>元素。

    <item>定制特定状态的color

    android:color16进制颜色,由RGB值指定,可带Alpha

    #RGB#ARGB#RRGGBB#AARRGGBB

    android:state_pressed         按下状态

    android:state_focused         聚焦状态

    android:state_selected        选中状态

    android:state_active

    android:state_checkable       可勾选状态

    android:state_checked         勾选状态

    android:state_enabled         可用状态(能接受触摸/点击事件)

    android:state_window_focused  应用程序窗口有焦点时使用(应用程序在前台)

    注意:记住一点,StateList中第一个匹配当前状态的item会被使用。因此,如果第一个item没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后。

     


    android:  backgroundTintMode

    API 21

    关联方法:setBackgroundTintMode(PorterDuff.Mode tintMode)

    属性说明:设置背景色调的渲染模式。默认模式src_in

    必须是下列常量之一:D指原本在Canvas上的内容dstS指绘制输入的内容srcaalpha通道,cRGB各个通道。

    src_over    [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]

    src_in      [Sa * Da, Sc * Da]

    src_atop    [Da, Sc * Da + (1 - Sa) * Dc]

    multiply   14 [Sa * Da, Sc * Dc]

    screen     15 [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]

    add        16 Saturate(S + D)

    它对应的全局资源符号是backgroundTintMode

     

    tintMode可以为null以清除色调。

     

    android.graphics.PorterDuff.Modepublic static final enum PorterDuff.Mode

    D指原本在Canvas上的内容dstS指绘制输入的内容srcaalpha通道,cRGB各个通道。

     

    PorterDuff.Mode.CLEAR      0  不绘制                       [0, 0]

    PorterDuff.Mode.SRC        1  显示上层绘制                 [Sa, Sc]

    PorterDuff.Mode.DST        2  显示下层绘制                 [Da, Dc]

    PorterDuff.Mode.SRC_OVER   3 上下层都显示,上层居上显示   [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]

    PorterDuff.Mode.DST_OVER   4 上下层都显示,下层居上显示   [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc]

    PorterDuff.Mode.SRC_IN     5  取上层绘制交集               [Sa * Da, Sc * Da]

    PorterDuff.Mode.DST_IN     6 取下层绘制交集               [Sa * Da, Sa * Dc]

    PorterDuff.Mode.SRC_OUT    7 取上层绘制非交集             [Sa * (1 - Da), Sc * (1 - Da)]

    PorterDuff.Mode.DST_OUT    8 取下层绘制非交集             [Da * (1 - Sa), Dc * (1 - Sa)]

    PorterDuff.Mode.SRC_ATOP   9  取上层交集部分与下层非交集部分[Sa, Sa * Dc + Sc * (1 - Da)]

    PorterDuff.Mode.DST_ATOP  10 取下层交集部分与上层非交集部分 [Da, Sc * Da + (1 - Sa) * Dc]

    PorterDuff.Mode.XOR       11  去除交集部分                 [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]

    PorterDuff.Mode.DARKEN    12 取两层全部区域,交集部分加深  [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)]

    PorterDuff.Mode.LIGHTEN   13 取两层全部区域,交集部分点亮  [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)]

    PorterDuff.Mode.MULTIPLY  14  取交集,显示叠加             [Sa * Da, Sc * Dc]

    PorterDuff.Mode.SCREEN    15  取两层全部区域,交集部分透明 [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]

    PorterDuff.Mode.ADD       16  取两层全部区域,交集部分叠加 Saturate(S + D)

    PorterDuff.Mode.OVERLAY   17

     

    如果设置了android:background,那么控件的背景颜色就会直接修改。   

    如果设置了android:backgroundTint,那么就会将设置的颜色和原来的背景进行一个叠加的过程,至于如何叠加,就是上面的android:backgroundTintMode    

    低版本时,需要引入support-V7jar包。并把控件定义为:android.support.v7.widget.AppCompat...

    对应的关联方法也改为setSupportBackgroundTintList(); setSupportBackgroundTintMode();

     


    android:  clickable

    API 1

    关联方法:setClickable(boolean clickable)

    属性说明:设置视图是否响应点击事件

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是clickable

     

    启用或禁用此视图的点击事件。当视图可点击时,它将在每次点击时将其状态改变为“按下”。 子类应将视图设置为可点击,以对用户的点击进行直观反应。

     

    如要设置setClickable(false),一定要放在按扭的setOnClickListener事件之后!

    因为setOnClickListener事件会去重写View v,也就是会把setClickable设为TRUE

     


    android:  contentDescription

    API 4

    关联方法:setContentDescription(CharSequencecontentDescription)

    属性说明设置视图的简要描述。用于辅助功能由于一些视图没有文本表示,所以此属性可以用于提供这种属性。

    必须是字符串值(string),使用'\\;'以转义Unicode字符的字符,如'\\ n''\\ uxxxx'

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是contentDescription

     

    例如,具有用于发出呼叫的电话图标的图像按钮可以使用“呼叫”作为其内容描述。 用于保存文件的软盘图像可以使用“保存”。

    [Accessbility]警告。可以被TalkBack识别,某些程序通过声音来告诉有视觉障碍的用户。

    android控件中没有文本描述的view如果不加android:contentDescription="@string/**"就会有黄色的下划线。

    我们可以使用tools:ignore="contentDescription"来忽略这个警告。

     


    android:  contextClickable

    API 23

    关联方法:setContextClickable(boolean contextClickable)

    属性说明:设置视图是否响应上下文点击事件。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是contextClickable

     


    android:  drawingCacheQuality

    API 1

    关联方法:setDrawingCacheQuality(int quality)

    属性说明:设置半透明绘图缓存的质量。此属性仅在绘图高速缓存已启用和半透明时使用。默认值为auto

    必须是下列常量值之一。

    auto DRAWING_CACHE_QUALITY_AUTO 默认,由框架决定

    low  DRAWING_CACHE_QUALITY_LOW  低质量,使用较低的颜色深度,消耗更少的内存

    high DRAWING_CACHE_QUALITY_HIGH 高质量,使用较高的颜色深度,消耗更多的内存

    对应的全局属性资源符号是drawingCacheQuality

     

    setDrawingCacheEnabled (boolean enabled)

    启用或禁用绘图高速缓存。

     


    android:  duplicateParentState

    API 1

    属性说明:重复父状态。如果设置true视图从其直接父代而不是其自身获取可绘制状态(焦点,按下等)。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是duplicateParentState

     

    isDuplicateParentStateEnabled()

    如果设置此属性true,将直接从父容器中获取绘图状态(焦点,按下等)。仅仅是获取绘图状态,而没有获取事件,也就是你点一下LinearLayoutButton有被点击的效果,但是不执行点击事件。

    就是父控件响应点击事件,子View不响应点击事件,但是颜色要随着点击而发生变化。

     


    android:  elevation

    API 21

    关联方法:setElevation(float elevation)

    属性说明:设置View的深度z。组件浮起来的高度。阴影。

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号elevation

     


    android:  fadescrollbars

    API 5

    关联方法setScrollbarFadingEnabled(boolean fadeScrollbars)

    属性说明:定义在ScrollBar没有使用时,是否淡出(隐藏)默认为true

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是fadeScrollbars

     

    如果将其设置为false,那么只要能够滚动,滚动条就会一直显示,不会隐藏。但如果View全部显示完成,不能滚动,则不会显示。

    此外,如果配置了android:scrollbarTrackVertical,也就是滚动条的Track,然后设置fadeScrollbars为不隐藏滚动条,那么不仅滚动条不会隐藏,滚动条的Track同样也不会隐藏。

     


    android:  fadingEdgeLength

    API 1

    关联方法getVerticalFadingEdgeLength()

    属性说明:设置边框渐变的长度。

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号fadingEdgeLength

     


    android:  filterTouchersWhenObscured

    API 9

    关联方法:setFilterTouchesWhenObscured(boolean enabled)

    属性说明:设置视图窗口被另一个可见窗口遮住时,是否过滤触摸事件。设置为ture时,当出现toast、对话框或者其他窗口上方视图的窗口时,不再接收触摸事件。参阅view安全文档以了解更多的信息。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是filterTouchersWhenObscured

     


    android:  fitsSystemWindows

    API 1

    关联方法:setFitsSystemWindows(booleanfiltsSystemWindows)

    属性说明:设置是否根据系统窗口(如状态栏)调整视图布局。如果为true,请调整此视图的填充以留出系统窗口的空间。 仅在此视图位于非嵌入式活动中时才会生效。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是filtsSystemWindows

     


    android:  focusable

    API 1

    关联方法:setFocusable(boolean focusable)

    属性说明:设置视图是否可以获得焦点。默认情况下,用户不能将焦点移动到视图;通过将这个属性设置为true,允许视图获取焦点。这个值不会影响直接调用requestFocus()的行为,它将始终请求焦点,而不管此视图如何。 它只影响焦点导航将尝试移动焦点的位置。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是focusable

     

    若有requestFocus()被调用时,后者优先处理。



    android:  focusableInTouchMode

    API 1

    关联方法:setFocusableInTouchMode(booleanfocusableInTouchMode)

    属性说明:在触摸模式下配置是否可以获得焦点。如果视图设置为true,则该视图可以在点击时获得焦点,并且如果点击了没有将该属性设置为true的另一视图,则可以保持焦点。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是focusableInTouchMode

     

    focusable是切换得到的焦点,focusableInTouchMode是手指点击获得焦点

     


    android:  forceHasOverlappingRendering

    API 24

    关联方法:forceHasOverlappingRendering (boolean hasOverlappingRendering)

    属性说明:设置此视图是否具有在绘制时可能重叠的元素。

    点击了没有将该属性设置为true的另一视图,则可以保持焦点。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是forceHasOverlappingRendering

     

    设置此视图的重叠渲染的行为(有关此行为的更多详细信息,请参阅hasOverlappingRendering())。 调用此方法是替代在子类中覆盖hasOverlappingRendering(),提供的值然后在内部使用。 也就是说,当调用

    forceHasOverlappingRenderingboolean)时,将忽略hasOverlappingRendering()的值,而是使用传递到此方法的值。

     


    android:  foreground

    API 1

    关联方法:setForeground(Drawable foreground)

    属性说明:设置前景drawable绘制在内容上。这可以用作叠加。 如果gravuty被设置为fill,则前景可绘制参与内容的填充。

    可以引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    可以是颜色值(color),格式#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。

    对应的全局属性资源符号是foreground

     


    android:  foregroundGravity

    API 1

    关联方法:setForegroundGravity(int gravity)

    属性说明:定义应用于前景drawablegravity。默认为fill

    必须是下列常量值的一个或多个(用|分隔):

    top               将对象推送到其容器的顶部,而不更改其大小。

    bottom            将对象推送到其容器的底部,而不更改其大小。

    left              将对象推送到其容器的左侧,而不更改其大小。

    right             将对象推送到其容器的右侧,而不更改其大小。

    center            将对象放置在其容器的垂直和水平轴的中心,而不改变其大小。

    center_vertical   将对象放置在其容器的垂直中心,而不改变其大小。

    centet_horizontal 将对象放置在其容器的水平中心,而不改变其大小。

    Fill              如果需要,增大对象的水平和垂直尺寸,以便它完全填充其容器。

    fill_vertical     如果需要,增大对象的垂直尺寸,以便它完全填充其容器。

    fill_horizontal   如果需要,增大对象的水平尺寸,以便它完全填充其容器。

    clip_vertical     附加的可选设置,它可以设置容器内子对象的上下边缘裁剪它的容器边框。裁剪会基于垂直对齐的方式:顶部对齐的会裁剪底部边缘,底部对齐的会裁剪顶部边缘,不会上下边缘都裁剪。

    clip_horizontal   附加的可选设置,它可以设置容器内子对象的左右边缘裁剪它的容器边框。裁剪会基于水平对齐的方式:左对齐的会裁剪右边缘,右对齐的会裁剪左边缘,不会左右边缘都裁剪。

    对应的全局属性资源符号是foregroundGravity

     


    android:  foregroundTint

    API 21

    关联方法:setForegroundTintList(ColorStateList tint)

    属性说明:设置前景色调。   

    必须是颜色值(color),格式#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是foregroundTint

     


    android:  foregroundTintMode

    API 21

    关联方法:setForegroundTintMode(PorterDuff.Mode tintMode)

    属性说明:设置前景色调的渲染模式。

    必须是以下常量之一: 

    src_over   src_in   src_atop   multiply   screen   add

    对应的全局属性资源符号是foregroundTintMode

     


    android:  hapticFeedbackEnabled

    API 3

    关联方法:setHapticFeedbackEnabled(booleanhapticFeedbackEnabled)

    属性说明:设置视图是否应该为诸如长按等事件启用触觉反馈。启用后在点击等事件时会有震动等反馈效果。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是hapticFeedbackEnabled

     


    android:  id

    API 1

    关联方法:setId(int id)

    属性说明设置组件ID,为此视图提供一个标识符名称,稍后可通过View.findViewById()Activity.findViewById()来检索。这必须是资源引用;通常您使用@ +语法设置此属性以创建新的ID资源。 例如:androidid =@ + id / my_id”,它允许您以后使用findViewByIdR.id.my_id)检索视图。

    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应的全局属性资源符号是id

     

    给当前View设置一个在当前layout.xml中的唯一编号,不同的layout.xml之间定义相同的id不会冲突。

     


    android:  importantForAccessibility

    API 16

    关联方法:setImportantForAccessibility(int mode)

    属性说明设置View辅助功能的重要性。如果它触发辅助功能事件,并且如果它被报告给查询屏幕的辅助功能服务。注意:虽然不推荐,但辅助服务可能会决定忽略此属性,并对视图树中的所有视图进行操作。

    必须是整型值(integer),如:100

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    可以是下列常量值之一:

            auto               系统确定视图对于辅助功能是否重要 -默认(推荐)。

            yes                该视图对于辅助功能很重要。

    no                 该视图对于辅助功能不重要。

    noHideDescendants  该视图对于辅助功能不重要,它的任何后代视图也不重要。

    对应的全局属性资源符号是importantForAccessibility

     


    android:  isScrollbarsContainer

    API 3

    关联方法SetScrollContainer(boolean isScrollContainer)

    属性说明:设置是否将视图用作滚动容器。这意味着可以调整其大小以缩小其整个窗口,从而为输入法创建空间。如果没有设置,默认值将为true如果“scrollbars”有垂直滚动条设置,否则将为false

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是isScrollbarsContainer

     


    android:  keepScreenOn

    API 1

    关联方法:setKeepScreenOn(boolean keepScreenOn)

    属性说明:设置视图的窗口在可见的情况下是否保持屏幕开启

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是keepScreenOn

     


    android:  layerType

    API 11

    关联方法:setLayerType(int layerType,Paint paint)

    属性说明:设置指定支持此视图的图层类型。默认值为none

    有关详细信息,请参阅setLayerTypeintandroid.graphics.Paint)。

    必须是下列常量值之一:

    none     不使用图层。

    software 使用软件层。

    hardware 使用硬件层。

    对应的全局属性资源符号是layerType

     


    android:  layoutDirection

    API 17

    关联方法:setLayoutDirection(int layoutDirection)

    属性说明: 定义布局绘图的方向。这通常与所使用的语言脚本的书写方向相关。

    必须是以下常量之一:

    ltr      LATOUT_DIRECTION_LTR     Left-to-Right从左到右

    rtl      LATOUT_DIRECTION_RTL     Right-to-Left从右到左

    inherit  LATOUT_DIRECTION_INHERIT 从父视图继承。默认值。

    locale   LATOUT_DIRECTION_LOCALE  没有可继承的回到en-US中使用的方向(ltr

    对应的全局属性资源符号是layoutDirection

     


    android:  longClickable

    API 1

    关联方法setLongClickable(boolean longClickable)

    属性说明:设置是否响应长按事件

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是longClickable

     

    如果同时设置了onClickonLongClick事件,那么默认情况下长按时两个方法都会被调用

    可以再onLongClick事件执行完毕后return true;表示事件已经被处理,这样就不会调用onClick事件了

     


    android:  minHeight

    API 1

    关联方法setMinimumHeight(int minHeight)

    属性说明:设置视图的最小高度的可选参数。它不能保证视图将能够实现这个最小高度(例如,如果其父布局约束它具有较少的可用高度)。

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号minHeight

     


    android:  minWidth

    API 1

    关联方法setMinimumWidth(int minWidth)

    属性说明:设置视图的最小宽度的可选参数。它不能保证视图将能够实现这个最小宽度(例如,如果其父布局约束它具有较少的可用宽度)。

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号minWidth

     



    焦点移动是基于一个在给定方向查找最近邻居的算法。如果指定视图不存在,移动焦点时将报运行时错误。可以设置imeOptions= actionDone,这样输入完即跳到下一个焦点。

    android:  nextFocusLeft

    API 1

    关联方法setNextFocusLeftId(int nextFocusLeftId)

    属性说明: 定义下一个焦点为FOCUS_LEFT要使用的视图的id如果引用引用了不存在的视图或者是不可见的层次结构的一部分,那么当访问引用时将导致RuntimeException

    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应全局属性资源符号nextFocusLeft

     

    android:  nextFocusRight

    API 1

    关联方法:setNextFocusRightId(int nextFocusrRightId)

    属性说明:定义下一个焦点为FOCUS_RIGHT要使用的视图的id如果引用引用了不存在的视图或者是不可见的层次结构的一部分,那么当访问引用时将导致RuntimeException

    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应全局属性资源符号extFocusRight

     

    android:  nextFocusUp

    API 1

    关联方法:setNextFocusUpId(int nextFocusUpId)

    属性说明:定义下一个焦点为FOCUS_UP要使用的视图的id如果引用引用了不存在的视图或者是不可见的层次结构的一部分,那么当访问引用时将导致RuntimeException

    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应全局属性资源符号nextFocusUp

     

    android:  nextFocusDown

    API 1

    关联方法:setNextFocusDownId(int nextFocusDownId)

    属性说明:定义下一个焦点为FOCUS_DOWN要使用的视图的id如果引用引用了不存在的视图或者是不可见的层次结构的一部分,那么当访问引用时将导致RuntimeException

    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应全局属性资源符号nextFocusDown

     

    android:  nextFocusForward

    API 11

    关联方法:setNextFocusForwardId(int nextFocusForward)

    属性说明:定义下一个焦点为FOCUS_DOWN要使用的视图的id如果引用引用了不存在的视图或者是不可见的层次结构的一部分,那么当访问引用时将导致RuntimeException

    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应全局属性资源符号nextFocusForward

     


    android:  onClick

    API 4

    属性说明:设置单击视图时在此View的上下文中调用的方法的名称。 此名称必须对应于只包含一个View类型的参数的公共方法。 例如,如果你指定androidonClick =sayHello”,你必须声明一个public void sayHelloView v)方法你的上下文(通常是你的Activity)。

    必须是字符串值(string),使用'\\;'以转义Unicode字符的字符,如'\\ n''\\ uxxxx'

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是onClick

     


    android:  padding

    API 1

    关联方法:setPaddingRelative (int start, int top, int end, int bottom)

    属性说明:设置所有四个边的填充像素。


    android:  paddingTop

    API 1

    关联方法:setPaddingRelative (int start, int top, int end, int bottom)

    属性说明:设置上边的填充像素。


    android:  paddingBottom

    API 1

    关联方法:setPaddingRelative (int start, int top, int end, int bottom)

    属性说明:设置下边的填充像素。


    android:  paddingLeft

    API 1

    关联方法:setPadding (int left, int top, int right, int bottom) 

    属性说明:设置左边的填充像素。


    android:  paddingRight

    API 1

    关联方法:setPadding (int left, int top, int right, int bottom)

    属性说明:设置右边的填充像素。


    android:  paddingStart

    API 17

    关联方法:setPaddingRelative (int start, int top, int end, int bottom)

    属性说明:设置开始处的填充像素。


    android:  paddingEnd

    API 17

    关联方法:setPaddingRelative (int start, int top, int end, int bottom)

    属性说明:设置结尾处的填充像素。

     

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号paddingpaddingToppaddingBottompaddingLeftpaddingRightpaddingStartpaddingEnd

     

    androidpaddingLeftandroidpaddingStart的区别:

    有的语言是按照从右往左的顺序来书写的。在Android  4.2系统之后,GoogleAndroid中引入了RTL布局,更好的支持了由右到左文字布局的显示,为了更好的兼容RTL布局,google推荐使用StartEnd来替代LeftRight,这样应用可以在正常的屏幕和由右到左显示文字的屏幕上都保持一致的用户体验。

     

    setPadding (int left, int top, int right, int bottom)

    API 1

    setPaddingRelative (int start, int top, int end, int bottom)

    API 17

     


    android:  fadingEdge

    API 1-14

    属性说明:设置拉滚动条时,边框渐变的方向

    此属性已弃用,将从API 14中忽略。请求API 14以上时,请使用androidrequiresFadingEdge属性。

    android:  requiresFadingEdge

    API 14

    关联方法:setVerticalFadingEdgeEnabled(boolean verticalFadingEdgeEnabled)

    属性说明定义滚动时边缘是否褪色。即滚动时应淡化哪些边。

    必须是下列常量值的一个或多个(用|分隔):

    none         没有边缘褪色。

    horizontal   仅水平边缘褪色。

    vertical     仅垂直边缘褪色。

    这个属性对应全局属性资源符号requiresFadingEdge

     


    android:  rotation

    API 11

    关联方法:setRotation(float rotation)

    属性说明: 设置旋转度数

    必须是浮点值(float),如:1.2

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号rotation

     


    android:  rotationX

    API 11

    关联方法:setRotationX(float rotationX)

    属性说明: 水平旋转度数

    必须是浮点值(float),如:1.2

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号rotationX

     

    增大值会导致顺时针旋转,当旋转大视图时,建议相应地调整相机距离。

    有关详细信息,请参阅setCameraDistancefloat)。

     


    android:  rotationY

    API 11

    关联方法:setRotationY(float rotationY)

    属性说明: 垂直旋转度数

    必须是浮点值(float),如:1.2

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号rotationY

     

    增大值会导致逆时针旋转,当旋转大视图时,建议相应地调整相机距离。

    有关详细信息,请参阅setCameraDistancefloat)。

     


    android:  saveEnabled

    API 1

    关联方法:setSaveEnabled(boolean)

    属性说明:设置是否在窗口冻结时(如旋转屏幕)保存View的数据,如果你的viewid,那默认系统就会帮你保存。

    如果为false,则当该视图被冻结时,不会保存任何状态。 默认值为true,允许保存视图(必须id)。将此选项设置为false只会禁用此视图的状态,而不会禁用其仍可保存的子项。

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是saveEnabled

     

    即是否将调用其onSaveInstanceState()方法。

     


    android:  scaleX

    API 11

    关联方法:setScaleX(float scaleX)

    属性说明: 设置X轴缩放。水平方向缩放比例。即宽度的缩放,为1则表示不应用缩放。

    必须是浮点值(float),如:1.2

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scaleX

     


    android:  scaleY

    API 11

    关联方法:setScaleY(float scaleY)

    属性说明: 设置Y轴缩放。竖直方向缩放比例。即高度的缩放,为1则表示不应用缩放。

    必须是浮点值(float),如:1.2

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scaleY

     


    android:  scrollIndicators

    API 23

    关联方法:setScrollIndicators(int indicators)\setScrollIndicators(int indicators,int mask)

    属性说明:定义当视图可以滚动时应显示哪些滚动指示器。可以使用逻辑OR组合多个值,例如“top | bottom”。

    必须是下列常量值的一个或多个(用|分隔):

    none    不显示滚动指示。

    top     当视图可以向上滚动时,显示顶部滚动指示器。

    bottom  当视图可以向下滚动时,显示底部滚动指示器。

    left    当视图可以向左滚动时,显示左滚动指示器。

    right   当视图可以向右滚动时,显示右部滚动指示器。

    start   当视图可以向开始方向滚动时,显示开始方向滚动指示器。

    end     当视图可以向结束方向滚动时,显示结束方向滚动指示器。

    对应全局属性资源符号是scrollIndicators

     

    setScrollIndicators(int indicators)设置所有滚动指示器

    setScrollIndicators(int indicators,int mask)设置指定滚动指示器

    当启用时,如果视图可以在指定的方向上滚动时,才会显示

     


    android:  scrollX

    API 1

    属性说明:以像素为单位设置水平方向滚动的的偏移值x方向的滚动偏移。即在水平方向滚动了多少距离。

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scrollX

     


    android:  scrollY

    API 1

    属性说明:以像素为单位设置垂直方向滚动的的偏移值y方向的滚动偏移。即在竖直方向滚动了多少距离。

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scrollY

     


    android:  scrollbarsAlwaysDrawHorizontalTrack

    API 1

    属性说明:表示是否总是显示水平滚动条的滚动轨道(Track,默认为false

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scrollbarsAlwaysDrawHorizontalTrack

     


    android:  scrollbarsAlwaysDrawVerticalTrack

    API 1

    属性说明:表示是否总是显示垂直滚动条的滚动轨道(Track,默认为false

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scrollbarsAlwaysDrawVerticalTrack

     

    通常,如果设置了滚动条的Track,那么Track会随着滚动条一起显示和隐藏。

    但如果设置了android:scrollbarAlwaysDrawVerticalTracktrue,则滚动条的Track将一直显示,不会隐藏。

    当然,如果没有配置android:scrollbarTrackVertical,即使设置了android:scrollbarAlwaysDrawVerticalTracktrue,也不会有Track显示。

    此外,android:fadeScrollbars配置为false,则无论android:scrollbarAlwaysDrawVerticalTrack配置为true还是falseTrack都不会隐藏。

     


    android:  scrollbarsDefaultDelayBeforeFade

    API 5

    关联方法:setScrollBarDefaultDelayBeforeFade(int scrollBarDefaultDelayBeforeFade)

    属性说明:表示滚动条从显示到隐藏的间隔时间,单位为毫秒,如果不设置,默认为300毫秒。

    必须是整数型值(integer),如100”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scrollbarsDefaultDelayBeforeFade

     

    即渐变之前的延迟。

     


    android:  scrollbarsFadeDuration

    API 5

    关联方法:setScrollBarFadeDuration(int scrollBarFadeDuration)

    属性说明:表示滚动条从滚动条开始隐藏到完全隐藏的间隔时间,单位为毫秒,如果不设置,默认为250毫秒。

    必须是整数型值(integer),如100”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scrollbarsFadeDuration

     


    android:  scrollbarsSize

    API 1

    关联方法:setScrollBarSize(int ScrollBarSize)

    属性说明:设置滚动条的尺寸。垂直滚动条的宽度、水平滚动条的高度

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号scrollbarsSize

     

    关于此项配置需要注意的是,如果android:scrollbarThumbVertical配置的是一个.9.png的图片(自身有宽度的Drawable),那么android:scrollbarSize配置会被忽略,只有android:scrollbarThumbVertica配置的是颜色值或者xml时(自身宽度为0Drawable),此项配置才会有效。

     


    android:  scrollbarsStyle

    API 1

    关联方法:setScrollBarStyle(int style)

    属性说明:控制滚动条样式和位置。滚动条可以重叠或插入。当插入时,它们添加到视图的填充。滚动条可以在填充区域内或视图的边缘绘制。例如,如果视图有一个可绘制的背景,并且你想在drawable指定的填充内绘制滚动条,你可以使用insideOverlayinsideInset。 如果你希望它们出现在视图的边缘,忽略填充,那么你可以使用outsideOverlayoutsideInset

    必须是下列常量值之一:

    insideOverlay (内贴图)Inside the padding and overlaid

    insideInset   (内插图)Inside the padding and inset

    outsideOverlay(外贴图)Edge of the view and overlaid

    outsideInset  (外插图)Edge of the view and inset

    它对应的全局资源符号是scrollbarsStyle

     

    设置滚动条的风格和位置也是用来设置滚动条的位置,不过不是左右位置,而是混动条和内容之间的相对位置。4组值:insideOverlay(内贴图) insideInset(内插图)outsideOverlay(外贴图)outsideInset(外插图)

    对一个View来说,它的内部可用区域是View自身大小再减去padding后的区域

    insideOverlay(内贴图)表示滚动条和View可用区域对齐,且覆盖在View之上

    insideInset   (内插图)表示滚动条和View可用区域对齐,但不覆盖在View上,而是将View挤到滚动条内

    outsideOverlay(外贴图)表示滚动条和View可用区域对齐,且覆盖在padding之上

    outsideInset (外插图)表示滚动条和View可用区域对齐,但不覆盖在padding之上,而是将View挤到滚动条内

    inside就是滚动条绘制在padding以内;

    outside就是不需要绘制在padding以内;

    Overlay是贴图,就是直接覆盖在内容的上方,这样内容可能会显示到滚动条下方;

    Inset是插图,就是会在对应的padding上加上滚动条的宽度,以不让内容显示到滚动条下面去。

     


    自定义滚动条,设置引用可以是一个颜色值,或者是一个Drawable资源。对Drawable资源可以使用.9png图片,也可以使用XML来配置。

    ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),其定制的属性为:

    android:  scrollbarsThumbHorizontal

    API 1

    属性说明:设置水平滚动滑块显示外观drawable对象。


    android:  scrollbarsThumbVertical

    API 1

    属性说明:设置垂直滚动滑块显示外观drawable对象


    android:  scrollbarsTrackHorizontal

    API 1

    属性说明:设置水平滚动条滑动轨道的显示外观drawable对象。


    android:  scrollbarsTrackVertical

    API 1

    属性说明:设置垂直滚动条滑动轨道的显示外观drawable对象。


    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应的全局属性资源符号是scrollbarThumbHorizontalscrollbarThumbVertical

     scrollbarTrackHorizontalscrollbarTrackVertical

     



    android:  scrollbars

    API 1

    属性说明:设置可显示的滚动条。定义应该在滚动时显示哪些滚动条。

    必须是下列常量值的一个或多个(用|分隔):

    none        不显示滚动条

        horizontal  只显示水平滚动条

        vertical    只显示垂直滚动条

    对应的全局属性资源符号是scrollbars

     

    如果scrollbars设置成none,那么其他的滚动条相关的配置都不会有效果。

     


    android:  soundEffectsEnabled

    API 1

    关联方法:setSoundEffectsEnabled(boolean soundEffectsEnabled)

    属性说明:设置点击或触摸时是否有声音效果

    必须是布尔值(boolean),true”或“false”。

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是soundEffectsEnabled

     

    如果你已经播放声音,你可能希望禁止视图的声音效果。



    android:  stateListAnimator

    API 21

    属性说明:设置视图动画的初始状态。

    必须引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是stateListAnimator

     

    setStateListAnimator (StateListAnimator stateListAnimator)

    将提供的StateListAnimator附加到此视图。

    任何先前连接的StateListAnimator都将被分离。

     


    android:  tag

    API 1

    属性说明设置文本标签。为视图提供一个包含字符串的标签,以便稍后使用View.getTag()View.findViewWithTag()进行搜索。通常最好使用ID(通过androidid属性)而不是标签,因为它们更快,并允许编译时类型检查。

    必须是字符串值(string),使用'\\;'以转义Unicode字符的字符,如'\\ n''\\ uxxxx'

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应的全局属性资源符号是tag

     

    View.gatTag()获取该字符串

    View.findViewWithTag()查找该组件

    android:tagandroid:id的区别

    Id的查找速度更快。只要不在同一个父控件中,tag可以又相同的名字。

    Tag不像ID是用标示view的。Tag从本质上来讲是就是相关联的view的额外的信息。它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结构。

    Tagstring标识。Id是整数标识。  

     

    setTag(Object tag)

    setTag(int key,Object tag)

    设置与此视图关联的标记和键。

    标记可用于标记其层次结构中的视图,并且不必在层次结构中是唯一的。

    标签还可以用于在视图中存储数据而不诉诸另一个数据结构。

    指定的键应该是在应用程序的资源中声明的id,以确保它是唯一的(请参阅ID资源类型)。

    标识为属于Android框架或未与任何包相关联的键将导致抛出IllegalArgumentException。(即指定键无效。)

     


    android:  textAlignment

    API 17

    关联方法:setTextAlignment(inttextAlignment)

    属性说明: 设置文本的显示对齐方式。

    必须是一个整型值(integer),如:100

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    可以是以下常量之一:

    Inherit  默认

    gravity  默认为根视图。相对于每个段落文本的方向,

      决定ALIGN_NORMALALIGN_CENTERALIGN_OPPOSITE

    textStar 对齐段落开头。例如ALIGN_NORMAL

    textEnd  对齐段落结尾。例如ALIGN_OPPOSITE

    center   将段落居中。例如ALIGN_CENTER

    viewStar 对齐视图的开头,如果视图为LTR模式,则为ALIGN_LEFT,否则为ALIGN_RIGHT

    viewEnd  对齐视图的结尾,如果视图为LTR模式,则为ALIGN_RIGHT,否则为ALIGN_LEFT

    对应的全局属性资源符号是textAlignment

     

    如果值设置为inherit,则对齐方式为1-6之一。沿用父类的值,如果没有父类,则使用1

     


    android:  textDirection

    API 17

    关联方法:setTextDirection(inttextDirection)

    属性说明:定义文本的布局方向。

    必须是一个整型值(integer),如:100

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    可以是以下常量之一:

    Inherit       默认

    firstStrong   默认为根视图。第一个强方向字符决定段落方向。如果没有,则段落方向就是布局方向。

    anyRtl        如果含任何强RTL字符,段落方向就是RTL;如果含任何强LTR字符,段落方向就是LTR

      如果都没有,则段落方向就是布局方向。

    ltr           段落方向为从左往右。

    rtl           段落方向为从右往左。

    locale        段落方向来自系统区域设置。

    firstStrongLtr第一个强方向字符决定段落方向。如果没有,则段落方向为LTR

    firstStrongRtl第一个强方向字符决定段落方向。如果没有,则段落方向为RTL

    对应的全局属性资源符号是textDirection

     

    如果值设置为inherit,则布局方向为1-7之一。沿用父类的值,如果没有父类,则使用1

     


    android:  theme

    API 24

    属性说明:指定视图的主题覆盖。当设置了主题覆盖时,将使用具有指定资源的上下文主题来扩充视图。XML填充期间,具有主题覆盖的视图下的任何子视图都将继承主题上下文。

    必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

    对应的全局属性资源符号是theme

     


    android:  translationformPivotX

    API 11

    关联方法:setPivotX(float PivotX)

    属性说明: 相对于一点的水平方向的偏移量

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号translationformPivotX

     

    默认情况下,轴点位于对象的中心。设置此属性会禁用此行为,并导致视图仅使用显式设置的pivotXpivotY值。

     


    android:  translationformPivotY

    API 11

    关联方法:setPivotY(float PivotY)

    属性说明: 相对于一点的垂直方向的偏移量

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号translationformPivotY

     

    默认情况下,轴点位于对象的中心。设置此属性会禁用此行为,并导致视图仅使用显式设置的pivotXpivotY值。

     


    android:  transitionName

    API 21

    属性说明:命名一个View,以识别能移动。View层次结构中,名称应该是唯一的。

    必须是字符串值(string),使用'\\;'以转义Unicode字符的字符,如'\\ n''\\ uxxxx'

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号transitionName

     


    android:  translationX

    API 11

    关联方法:setTranslationX(float translationX)

    属性说明Viewx的移动距离

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号translationX

     


    android:  translationY

    API 11

    关联方法:setTranslationX(float translationY)

    属性说明Viewy的移动距离

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号translationY

     


    android:  translationZ

    API 21

    关联方法:setTranslationX(float translationZ)

    属性说明Viewz的移动距离。这个值被添加到View浮起来的高度(海拔)。

    必须是带单位的浮点型尺寸值float,如:14.5sp”。有效的单位包括:px(像素)dp(密度无关像素)sp(通常用于字体尺寸的可伸缩像素)in(英寸)mm(毫米)

    也可以引用一个包含此类型值的资源格式:@[package:]type:name或主题属性(格式:?[package][type:]name)。

    对应全局属性资源符号translationZ

     


    android:  visibility

    API 1

    关联方法:setVisibility(int visibility)

    属性说明:设置是否显示组件。view的可见性。

    必须是以下常量之一:

    visible             可见

    invisible           不可见,但占用view的空间

    gone                 不可见,不占用view的空间

    它对应的全局资源符号是visibility

     

    展开全文
  • Android API的View类

    千次阅读 2015-08-16 18:49:21
    View类代表用户界面组件的基本构建块。一个View占据屏幕上的一块方形区域,负责该区域的绘图或事件处理。View类是用来创建交互式UI界面的所有部件的基类。一个窗口的所有View以树形的方式组织。...
  • Android Lint扫描规则说明(一)

    千次阅读 2019-06-21 11:47:57
    主要内容 对Android Studio支持的六类Android Lint规则, 本文主要对Accessibility 和 Internationalization 两中类型所包含的14个项的说明,主要内容都是文档翻译,适当加一些自己的感想。 图一 总览 ...
  • 废话不多说了,重点来了,Android的layout布局总体来看分为几大类:  第一类:属性值 true或者 false  android:layout_centerHrizontal 水平居中  android:layout_centerVertical 垂直居中 ...
  • API 23 view.View——属性分析

    千次阅读 2016-11-28 17:50:48
    参阅:http://android.xsoftlab.net/reference/android/view/View.html
  • Android布局文件layout.xml的一些属性值

    千次阅读 2014-05-21 11:21:17
    参考:http://blog.csdn.net/msmile_my/article/details/9018775 第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_...
  • Android中padding和margin的理解

    千次阅读 2015-10-11 14:14:08
    两个属性表示的意义与web编程相同。 深入理解: padding约束的是控件或布局显示的内容距离边框的距离,沿垂直边框向内压缩,padding越大,内容显示控件越小;...margin这是沿垂直边框向外延伸的距离, 它的意思...
  • TabLayout属性详解

    千次阅读 2016-12-08 18:13:08
    Design库-TabLayout属性详解 序 上图是简书Android端的主页Tab,在其他的App中Tab也是很常见的,它的实现方式也有很多:TabHost,自定义控件(第三方库),RadioGroup等等。这里主要介绍Android Design库中的...
  • Android Layout 布局属性全解

    千次阅读 2016-09-06 10:00:39
    http://blog.csdn.net/jaysong2012/article/details/41047587   Android Layout 布局属性全解 标签: android FrameLayout 2014-11-12 18:01 2722人阅读 评论(0...android开发(55) 
  • 简析API属性——API 23 view.View

    千次阅读 2016-10-26 18:49:14
     参考:http://android.xsoftlab.net/reference/android/view/View.html   public class View extends ...implements Drawable.Callback KeyEvent.Callback AccessibilityEventSource ...API
  • TabLayout使用详解

    千次阅读 2017-07-31 09:13:52
    TabLayout 标签布局 谷歌在Material Design中推出TabLayout以替代开源库PagerSlidingTabStrip和ViewPagerIndicator的使用。事实上,这类indicator指示器的布局可谓是Android中最常见的布局设计了,TabLayout的出现...
  • Android的layout布局属性

    千次阅读 2013-12-17 13:37:07
    网上看到的,没有找到来源。 Android的layout布局总体来看分为几大类:  第一类:属性值 true或者 false  android:layout_centerHrizontal 水平居中  android:layout_... android:layout_cente
  • Android 8.0 新功能

    千次阅读 2018-01-25 15:48:08
    Android 8.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更。 其中大部分变更会影响所有应用,而不论应用针对的是何种版本的 ...
  • Android M新控件知识整理

    千次阅读 2016-06-16 17:44:17
    Android M新控件知识整理之NavigationView,Toolbar,TabLayout,AppBarLayout,CoordinatorLayout
  • 1:TextView 主要在界面上显示一段文字    android:id="@+id/textView"  android:layout_width="wrap_content" 宽度  android:layout_height="wrap_content" 高度  android:text="This is Te
  • 自从Android3.0引入Fargment之后,在Activity中使用底部导航进行Fragment的切换已经越来越普遍,或者可以说已经成为了移动应用的标配,而本篇文章我总结了项目中常用的四种实现导航的方式,包含底部和顶部的双导航...
  • DrawerLayout 官方文档

    千次阅读 2014-10-16 17:53:04
    (新手一枚,多包涵)
1 2 3 4
收藏数 67
精华内容 26
关键字:

paddingend 最小api