基于安卓7.0:


零,布局时的属性命名空间:

类似App:  Android:之类的属性,要添加相应的xmlns才有效,在布局最外层框架添加

如下:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"

附录:

1. 应用命名空间
注意,不同于常见的android命名空间声明, fragment_crime_list.xml文件使用xmlns标签定
义了全新的app命名空间。指定showAsAction属性时,就用了这个新定义的命名空间。
基于历史代码的原因, AppCompat库需要使用app命名空间。操作栏API随Android 3.0引入。
为支持各种旧系统版本设备,早期创建的AppCompat库捆绑了兼容版操作栏。在运行Android 2.3
或更早版本系统的设备上,菜单及其相应的XML文件是确实存在的,但是android:showAsAction属性是随着操作栏的发布才添加的。
AppCompat库不希望使用原生showAsAction属性,因此,它提供了定制版showAsAction属
性(app:showAsAction)。



一,整体布局:

需要默认界面的大框架内加个布局里面控件的布局才有效

例子:外面是默认大框架,里面是布局,控件在布局内才有效

<android.support.constraint.ConstraintLayout 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="com.abel.sunvalley.studyapplication01.MainActivity">

        <LinearLayout
            android:layout_width="344dp"
            android:layout_height="495dp"
            android:gravity="center"
            android:orientation="vertical">
        </LinearLayout>


</android.support.constraint.ConstraintLayout>




二,间距密度:

有时需为视图属性指定大小尺寸值(通常以像素为单位,有时也用点、毫米或英寸)。最常
见的属性有:
 文字大小(text size),指定设备上显示的文字像素高度;
 边距(margin),指定视图组件间的距离;
 内边距(padding),指定视图外边框与其内容间的距离。
Android提供了密度无关的尺寸单位(density-independent dimension unit)。使用这种单位,可在不同屏幕密度的设备上获得同样的尺寸。无需进行麻烦的转换计算,应用运行时,Android会自动将这种单位转换成像素单位。
 dp(或dip)
英文density-independent pixel的缩写,意为密度无关像素。在设置边距、内边距或任何不打算按像素值指定尺寸的情况下,通常都使用dp这种单位。如果设备屏幕密度较高,密度无关像素会相应扩展至整个屏幕。1dp单位在设备屏幕上总是等于1/160英寸。使用dp的好处是,无论屏幕密度如何,总能获得同样的尺寸。
 sp
英文scale-independent pixel的缩写,意为缩放无关像素。它是一种与密度无关的像素,这种像素会受用户字体偏好设置的影响。我们通常会使用sp来设置屏幕上的字体大小。
 pt、mm、in
类似于dp的缩放单位。允许以点(1/72英寸)、毫米或英寸为单位指定用户界面尺寸。但在实际开发中不建议使用这些单位,因为并非所有设备都能按照这些单位进行正确的尺
寸缩放配置。
我们往往只会用到dp和sp两种单位。Android在运行时会自动将它们的值转换为像素单位



三,布局参数:

你是否已经注意到,有些属性名称以layout_开头,如android:layout_marginLeft,而
其他属性名称则不是,如android:text。
不以layout_开头的属性作用于组件。组件实例化时,会调用某个方法按照属性及属性值进
行自我配置。
以layout_开头的属性则作用于组件的父组件。我们将这些属性统称为布局参数。它们会告
诉父布局如何在内部安排自己的子元素。
即使布局对象(如LinearLayout)是布局的根元素,它仍然是一个带有布局参数的子组件。
在fragment_crime.xml文件中定义LinearLayout时,我们赋予了它两个属性:android:
layout_width和android:layout_height。LinearLayout实例化时,它的父布局会使用这
两个属性。也就是说, CrimeActivity内容视图里的FrameLayout会使用LinearLayout的
布局参数。


四,边距和内边距:

在fragment_crime.xml文件中,组件已经有了边距与内边距属性。开发新手有时分不清这两个属性。既然我们已经明白了什么是布局参数,那么二者的区别也就显而易见了。

边距属性是布局参数,决定了组件间的距离。假设一个组件对外界一无所知,边距必须对该组件的父组件负责。
内边距则并非布局参数。属性android:padding告诉组件:在绘制组件自身时,要比所含内容大多少。