布局,常用控件(上),资源
一、Android中6种布局以及各自作用
布局管理器本身并不会显示任何效果,只是可以约束内部控件的排列方式。
线性布局LinearLayout
可以让内部组件按照水平或垂直的方式进行摆放。还可以通过权重的方式让内部组件等 比例摆放。
相对布局RelativeLayout
可以让内部组件相对父容器来进行摆放,还可以相对兄弟组件来摆放。
帧布局FrameLayout
可以让组件一个叠加一个进行摆放。
表格布局TableLayout
可以让组件按照行的方式进行摆放,如果想让一行有多列可以放在TableRaw组件中。
网格布局GridLayout
让组件按照行与列的方式进行摆放。
绝对布局AbsoluteLayout
让组件按照xy的坐标来进行摆放。
二、LinearLayout实现效果以及属性,权重
<!--LinearLayout线性布局
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
命名空间,只在根布局中使用
android:layout_width="match_parent"布局宽的属性
match_parent指的是充满整个父容器
wrap_content自适应,会根据自身的大小来确定自己的宽或高
android:layout_height="match_parent"布局高的属性
android:orientation="horizontal"
规定内容组件排列方式为水平vertical(垂直)
android:gravity=""
控制内部组件的对齐方式 bottom(底部)|right(右边)
center_vertical(垂直居中)+center_horizontal(水平居中)=center(中心位置)
android:background="@drawable/kugou"为组件添加一个背景-->
android:layout_gravity="left"控制该组件在父容器中的位置
android:id="@+id/tv_show"为组件添加一个id属性
注意:
如果线性布局是垂直走向:
那么子元素的 android:layout_gravity="top" top和bottom值无效3
注意:
如果线性布局是垂直走向:
那么子元素的android:layout_gravity="top"top和bottom值无效
RelativeLoutay实现效果以及属性,margin和padding的区别
<!--相对兄弟组件:
android:layout_alignBottom="@id/tv_show"和...底部对齐
android:layout_alignLeft="@id/tv_show" 和...左对齐
android:layout_alignRight="@id/tv_show" 和...右对齐
android:layout_alignTop="@id/tv_show" 和...顶部对齐
android:layout_toLeftOf="@id/tv_show" 在...左边8
android:layout_toRightOf="@id/tv_show" 在...右边
android:layout_above="@id/tv_show" 在...上边
android:layout_below="@id/tv_show" 在...下边-->
<!-- margin 组件外边距
android:layout_margin="20dp" 距离上下左右20dp
android:layout_marginLeft="20dp" 距离左边20dp
android:layout_marginTop="30dp" 距离上边30dp
android:layout_marginRight="40dp" 距离右边40dp
android:layout_marginBottom="50dp" 距离下边50dp-->
<!-- margin组件外边距
android:layout_margin="20dp" 距离上下左右20dp
android:layout_marginLeft="20dp" 距离左边20dp
android:layout_marginTop="30dp" 距离上边30dp
android:layout_marginRight="40dp" 距离右边40dp
android:layout_marginBottom="50dp" 距离下边50dp-->
<!-- padding 组件内边距
android:padding="10dp" 距离内部内容上下左右都是10dp
android:paddingLeft="10dp" 距离内部内容左边的10dp
android:paddingTop="20dp" 距离内部内容上边的20dp
android:paddingRight="30dp" 距离内部内容右边的30dp
android:paddingBottom="40dp" 距离内部内容下边的40dp-->
<!--padding组件内边距
android:padding="10dp" 距离内部内容上下左右都是10dp
android:paddingLeft="10dp" 距离内部内容左边的10dp
android:paddingTop="20dp" 距离内部内容上边的20dp
android:paddingRight="30dp" 距离内部内容右边的30dp
android:paddingBottom="40dp"距离内部内容下边的40dp-->
android中的尺寸(dp,sp,px)
dp:度量单位,用于表示组件的宽或高。
sp:文字的大小单位,用于设置字体的大小。
px:像素点。
View的继承体系
TextView文字组件的使用和属性设置
<TextViewandroid:id="@+id/tv_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="哈哈"
android:textColor="#FFFFFF"
android:gravity="center"
android:textSize="40sp"
android:background="#FF6140"
android:drawableTop="@drawable/ic_launcher"
android:drawableLeft="@drawable/ic_launcher"
android:drawablePadding="20dp"/>
Button按钮的继承体系和属性设置
Button继承于TextView,TextView继承于View,View继承于Object
<Button android:id="@+id/btn_register"
android:layout_below="@id/et_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:textColor="#FFFFFF"
android:textSize="26sp"
android:background="#468711"
android:text="注册"/>9
<Buttonandroid:id="@+id/btn_register"
android:layout_below="@id/et_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:textColor="#FFFFFF"
android:textSize="26sp"
android:background="#468711"
android:text="注册"/>
EditText输入框组件的属性和使用(内容的长度,文本提示,密码,数字限制),以及获取文本内容
<EditText android:id="@+id/et_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:hint="请输入用户名"
android:textColor="#F84D1E"
android:layout_margin="10dp"
android:textSize="20sp"
android:password="true"
android:singleLine="true"
android:digits="asd123."
android:textColorHint="#57A716"/>
<EditTextandroid:id="@+id/et_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:hint="请输入用户名"
android:textColor="#F84D1E"
android:layout_margin="10dp"
android:textSize="20sp"
android:password="true"
android:singleLine="true"
android:digits="asd123."
android:textColorHint="#57A716"/>
<!-- android:maxLength="10" 设置输入框中输入的最大内容长度
android:hint="请输入用户名" 设置输入框的提示文字
android:textColorHint="#57A716" 设置输入框中提示文字的颜色
android:password="true" 设置输入框为密码模式,输入的内容会使用星号代替
android:singleLine="true" 设置内容为单行显示
android:numeric="integer" 限制输入内容只能是数字
android:digits="asd123." 限制输入的内容只能是asd123.-->7
<!--android:maxLength="10"设置输入框中输入的最大内容长度
android:hint="请输入用户名" 设置输入框的提示文字
android:textColorHint="#57A716"设置输入框中提示文字的颜色
android:password="true"设置输入框为密码模式,输入的内容会使用星号代替
android:singleLine="true"设置内容为单行显示
android:numeric="integer"限制输入内容只能是数字
android:digits="asd123."限制输入的内容只能是asd123.-->
Java代码:
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activti);
//找到输入框
final EditText f = (EditText) findViewById(R.id.et_msg);
//找到按钮
final Button ff = (Button) findViewById(R.id.btn_register);
ff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String st = f.getText().toString();
System.out.println("-----------onClick----------");
if(count%2==0){
ff.setText("登录"+st);
}else{
ff.setText("注册"+st);
}count++;
}
});
}
intcount=0;
@Override
protectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activti);
//找到输入框
finalEditTextf=(EditText)findViewById(R.id.et_msg)
//找到按钮
finalButtonff=(Button)findViewById(R.id.btn_register);
ff.setOnClickListener(newView.OnClickListener() {
@Override
publicvoidonClick(Viewv) {
// TODO Auto-generated method stub
Stringst=f.getText().toString();
System.out.println("-----------onClick----------");
if(count%2==0){
ff.setText("登录"+st);
}else{
ff.setText("注册"+st);
}count++;
}
});
}
10-res/values下可以有的所有资源,以及使用(color string dimen style xml中引用)
//在colors.xml中定义color资源
<color name="withe">#FFFFFF</color>
//在布局中使用
android:textColor="@color/withe"4
//在colors.xml中定义color资源
<colorname="withe">#FFFFFF</color>
//在布局中使用
android:textColor="@color/withe"
//在strings.xml中定义string资源
<string name="et_hint_msg">请输入用户名</string>
//在布局中使用
android:hint="@string/et_hint_msg"4
//在strings.xml中定义string资源
<stringname="et_hint_msg">请输入用户名</string>
//在布局中使用
android:hint="@string/et_hint_msg"
//在dimens.xml中定义字体大小尺寸
<resources>
<dimen name="et_text_size">20sp</dimen>
</resources>
//在布局中使用
android:textSize="@dimen/et_text_size"1
//在dimens.xml中定义字体大小尺寸
<resources>
<dimenname="et_text_size">20sp</dimen>
</resources>
//在布局中使用
android:textSize="@dimen/et_text_size"