组件继承关系图:
组件通用属性:
1)layout_width:组件的宽度,一般只有三个值wrap_content、fill_parent(老版本中使用)、match_parent,但他不是唯一控制宽度的元素
2)layout_height:组件的高度,一般只有三个值wrap_content、fill_parent(老版本中使用)、match_parent,但他不是唯一控制高度的元素
3)width:组件的宽度,他也不是唯一控制宽度的元素,他和layout_width共同决定组件的宽度
4)height:组件的高度,他也不是唯一控制高度的元素,他和layout_height共同决定组件的高度
5)text:文本内容
6)hint:文本内容为空时,显示这个元素指定的内容
7)singleLine:文本内容如果过长,则不完全展示文本内容,用盛省略号替代
8)gravity:组件内内容对齐方式,他与android:layout_gravity有着本质区别,android:layout_gravity是指自身在父组件中对齐方式
9)visibility:组件是否显示,visible默认值:显示;invisible:不显示,但是占有空间;gone:不显示,且不占用空间
10)textSize:文本大小,与文本相关的属性都有text开头如textStyle
11)autoLink:文本内容为Email、电话号码等形式的,当用户靠近文本是显示超链接形式
注意:关于layout_width 与 width 的区别(layout_height 与 height 同理):
1)二者共同决定组件的大小
2)当layout_width设置为fill_parent或match_parent时,width是不会起作用的,原因是已经为最大值了,由layout_width决定。
3)当layout_width设置为wrap_content时,width和wrap_content在系统计算后,谁的宽度大谁来决定组件最后的宽度。
1 TextView
文本控件主要包括TextView控件和EditText控件,TextView类继承自View类,TextView就是向用户显示文本,且不允许编辑,类似HTML中的Label标签。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:width="200dp"
android:height="300dp"
android:visibility="visible"
android:gravity="center"
android:autoLink="email"
android:singleLine="false"
android:hint="@string/app_name"
android:text="@string/maxtext" />
2 EditText
文本控件主要包括TextView控件和EditText控件,EditText类继承自TextView类,EditView就是一个可以编辑的文本域,类似HTML中input的type为text,当然可以设置他的类型。采用android:inputType设置文本类型,这个属性是非常重要的。
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:textSize="30sp"
android:width="200dp"
android:height="300dp"
android:visibility="visible"
android:gravity="center"
android:autoLink="email"
android:singleLine="false"
android:hint="@string/app_name"
/>
3 Button
Button按钮式组件中最常用之一,他是TextView的子类,同时他自身的间接子类也很丰富,主要有:CheckBox, RadioButton, ToggleButton ,学习Button最重要的不是布局,而是他的事件监听,如何处理监听事件如下:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:width="200dp"
android:height="300dp"
android:visibility="visible"
android:gravity="center"
android:autoLink="email"
android:singleLine="false"
android:hint="@string/app_name"
android:text="@string/login"
/>
第一种方式:
需要注意:
1)onClick指定的方法必须在Activity中声明,而且采用public void 的方式,参数必须有 View类型的。
2)ManiFest文件并不是一定要这样设置,这里只是意思注册Activity
Activity中如下设置:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.mainlayout);
}
public void clickMe(View view){
Toast.makeText(this, "hello world", Toast.LENGTH_SHORT).show();
}
}
layout中如下设置:
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:width="200dp"
android:height="300dp"
android:visibility="visible"
android:gravity="center"
android:autoLink="email"
android:singleLine="false"
android:hint="@string/app_name"
android:text="@string/login"
android:onClick="clickMe"
/>
ManiFest文件中如下设置:
<activity android:name="com.leagsoft.moon.activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
第二种方式:
需要注意:
1)不需要在用onClick方法指定事件监听处理,如果指定了onClick的方法,他也会被如下这种方式覆盖。
2)Activity中需要实现接口OnClickListener,然后注册在我们指定的按钮中。
3)更推荐使用这种方式。
Activity中如下设置:
public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.mainlayout);
btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new BtnClickImpl());
}
class BtnClickImpl implements OnClickListener{
@Override
public void onClick(View arg0) {
Toast.makeText(MainActivity.this, "hello world", Toast.LENGTH_SHORT).show();
}
}
}
layout中和ManiFest配置文件基本相同。
4 Toast
主要用来信息提示,类似Javascript中的alert,但是比alert要人性化了。
Toast.makeText(Context, "hello world", Toast.LENGTH_SHORT).show();