今天学习Android遇到问题点:
1.Android 相关目录中不能出现空格,否则会报以下错误:
project location should not contain whitespace,as this can cause problems with the NDK tools。
2. 使用logi输出时提示:TAG has private access in"android.support.v4.app.FragmentActivity"
解决方法:定义一个常数 TAG 在 MainActivity :
private static final String TAG = "MainActivity"
今天主要学习目录
1.Android UI布局
2.LinerLayout
3.RelativeLayout
附注:练习code
一、Andorid UI布局
UI 布局有一些Android提供的布局,可以使用在几乎所有的Android应用程序提供不同的视图,外观和风格。
S.N.布局和说明
LinearLayout视图组,所有的子视图在单一的方向对齐,垂直或水平。
RelativeLayout相对位置显示子视图的视图组。
TableLayout一种视图,组视图分为行和列。
AbsoluteLayout 使能够指定其子视图的确切位置。
FrameLayout 屏幕上是一个占位符,可以用它来显示一个单一的视图。
ListView显示滚动项目列表视图组。
GridView 网格控件是一种ViewGroup用于显示一个二维,滚动的网格的项目。
布局属性
每个布局都有一组属性,它定义布局的视觉属性。所有布局中,有几个共同的属性和其他属性布局。以下是常见的属性并可以应用到所有的布局中:
属性描述
android:id唯一地标识该视图的ID
android:layout_width布局的宽度
android:layout_height这是布局的高度
android:layout_marginTop这是关于布局的顶侧的额外的空间
android:layout_marginBottom在布局上的底侧的额外的空间
android:layout_marginLeft在布局上的左侧的额外的空间
android:layout_marginRight在右侧的布局的额外空间
android:layout_gravity它指定子视图被定位
android:layout_weight指定有多少布局额外的空间应该分配给视图
android:layout_x指定布局的x坐标
android:layout_y此指定布局的y坐标
android:layout_width布局的宽度
android:layout_width布局的宽度
android:paddingLeft布局的左填充
android:paddingRight布局的右填充
android:paddingTop布局顶部填充
android:paddingBottom布局底部填充
属性说明:
可以指定宽度和高度精确的测量,但更多的时候,使用这些常量作为宽度或高度设置:
android:layout_width=wrap_content 告诉视图,其内容所需要的尺寸大小本身。
android:layout_width=fill_parent 告诉视图如其父视图一样尺寸大小。
视图标识
一个视图对象有一个唯一的ID分配给它,用于唯一识别视图。ID在XML标签的语法是:
android:id="@+id/my_button"
以下是@+ 符号的简要说明:
在符号(@)开头的字符串表示XML解析器解析和扩展ID字符串的其余部分,将其识别为一个ID的资源。
加号(+)表示,这是一个新的资源名,必须创建并添加到资源中。要创建一个视图对象的实例,并捕捉到它的布局,使用以下命令:
Button myButton = (Button) findViewById(R.id.my_button);
二、LinearLayout
LinearLayout属性
以下是具体 LinearLayout 的重要属性:
属性描述
android:id这是布局的唯一标识ID。
android:baselineAligned这必须是一个布尔值,要么“true”或“false”,并防止布局调整其子的基线。
android:divider这是绘制按钮之间的垂直分隔。使用颜色值,它们的格式如:"#rgb", "#argb", "#rrggbb" 和 "#aarrggbb"。
android:gravity指定对象应该如何定位它的内容,无论是在X轴还是Y轴。可能的值是top, bottom, left, right, center, center_vertical, center_horizontal等。
android:orientation这种安排指定的方向,可以用“horizontal”表示为一排,“vertical”表示一列。默认是水平的。
三、RelativeLayout
Android 的 RelativeLayout 可以指定子视图如何彼此相对定位。每个视图的位置可以被指定为相对于同级元素或相对于父视图。
RelativeLayout 属性
以下是RelativeLayout 具体的属性:
属性描述
android:id这是布局的唯一标识ID。
android:gravity这指定对象应该如何定位它的内容,无论是X轴和Y轴。可能的值是top, bottom, left, right, center, center_vertical, center_horizontal等。
android:ignoreGravity这表示什么视图应该不受到重力影响。
使用RelativeLayout可以调整两个元素右边界或使一个下面跟着另一个视图,居中于屏幕上,中心,左侧等等。默认情况下,所有子视图都在左上角的布局,所以必须定义使用RelativeLayout.LayoutParams和一些重要属性的布局属性,每个视图的位置如下给出:
属性描述
android:layout_above位置上面给定锚点视图ID此视图的底部边缘,必须引用另一个资源,在形式 "@[+][package:]type:name"
android:layout_alignBottom name的下面 形式 "@[+][package:]type:name".
android:layout_alignLeft 左对齐 使用形式 "@[+][package:]type:name".
android:layout_alignParentBottom如果为true 底部同父视图,要么“true”或“false”。
android:layout_alignParentEnd如果为true,尾部同父视图,要么“true”或“false”。
android:layout_alignParentLeft如果为true,左边同父视图,要么“true”或“false”。
android:layout_alignParentRight如果为true,右边同父视图,要么“true”或“false”。
android:layout_alignParentStart如果为true,使得此视图开始边缘匹配父的开始边缘。必须是一个布尔值,要么“true”或“false”。
android:layout_alignParentTop如果为true,使得此视图的顶部边缘相匹配的父的顶部边缘。必须是一个布尔值,要么“true”或“false”。
android:layout_alignRight使得此视图的右边缘匹配给定的锚点视图ID的右边缘,并且必须是一个引用另一个资源,在形式 "@[+][package:]type:name".
android:layout_alignStart使得此视图开始边缘的匹配给定的锚点视图ID开始边缘,必须引用另一个资源,在表格 "@[+][package:]type:name".
android:layout_alignTop使得此视图的顶部边缘匹配给定的锚点视图ID的顶边缘,并且必须是一个引用到另一个资源,在形式 "@[+][package:]type:name".
android:layout_below定位此视图低于给定锚点视图ID的顶边缘,并且必须是一个引用到另一个资源,在形式 "@[+][package:]type:name".
android:layout_centerHorizontal如果为true,中心这个子视图水平在其父之内。必须是一个布尔值,要么“true”或“false”。
android:layout_centerInParent如果为true,使此子视图中心水平和垂直其父之内。必须是一个布尔值,要么“true”或“false”。
android:layout_centerVertical如果为true,该中心子垂直在其父之内。必须是一个布尔值,要么“true”或“false”。
android:layout_toEndOf此视图给定锚点视图ID结束边缘位置,必须引用另一个资源,在格式 "@[+][package:]type:name".
android:layout_toLeftOf此视图给定锚点视图ID的左边的右边位置,必须做个参考其他资源,在形式 "@[+][package:]type:name".
android:layout_toRightOf定位此视图为给定的锚点视图ID的右左边缘和必须是引用到另一个资源,在形式 "@[+][package:]type:name".
android:layout_toStartOf定位此视图为给定的锚点视图ID的开始的端部边缘,并且必须是一个引用到另一个资源,在形式 "@[+][package:]type:name".