Android studio APP开发 第五章 常用控件讲解
常用控件
控件都是在layout文件目录下的.xml文件里添加。
TextView
代码示例
<TextView
android:id="@+id/text_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="传值显示"
android:textSize="@dimen/text_size_first"
android:textColor="@color/text_color_first"
/>
代码解释
id 即一个控件专属的名字,Activity.java文件通过id找到控件,并对控件进行操作,以实现某些功能。 Activity.java文件中找到button的代码如下(此处以设置点击事件为例):
findViewById(R.id.button_first).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,FirstActivity.class);
intent.putExtra(TITLE,title);
startActivityForResult(intent,REQUEST_CODE);
}
});
Layout_width 和 Layout_height 为TextView的宽和高。 每一个控件都可以设置。wrap_content 为自适应,自动适应text的大小。
android:text=“传值显示” 即设置TextView所要展示的信息。
textSize 和 textColor 为设置TextView文本的大小和颜色。
这些是每一个控件都可以设置的属性,属于通用属性。
Button
Button 和TextView 几乎一样,是TextView的特殊情况,被人赋予的button的功能后于TextView区分开来。
代码如下:
<Button
android:id="@+id/button_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击返回"/>
EditText
EditText 即可编辑的控件,可以用来输入文本,用户登录时输入账户密码,输入手机号,输入名字,邮箱账号等。
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
<EditText
android:id="@+id/editText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name" />
<EditText
android:id="@+id/editText4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="phone" />
<EditText
android:id="@+id/editText5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textEmailAddress" />
四个edittext分别为输入密码,名字,电话号码,邮箱地址。输入类型被限制,关键代码在于inputType。 也可以自己写一个edittext,输入类型不限。效果如图(可自己运行后调试):
addTextChangedListener 设置文本改变监听器
即针对EditText里的内容改变时设置的一些功能。比如微博在输入内容超过140字时提示内容已超过限制。
代码如下:
EditText editText = (EditText) findViewById(R.id.editText4);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.i(TAG, "s:" + s.toString() + ",start:" + start + ",count:" + count + ",after:" + after);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i(TAG, "s:" + s.toString() + ",start:" + start + ",count:" + count + ",before:" + before);
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().length() > 5) {
Toast.makeText(MainActivity.this, "啊,救命,超过5个字啦", Toast.LENGTH_LONG).show();
}
Log.i(TAG, "s:" + s.toString());
}
});
分别为三个方法,beforeTextChanged(Text改变前) onTextChanged(Text改变时) afterTextChanged(Text改变后)Log 标记每一次改变。
ImagView
用来显示图片的控件。
代码如下:
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@drawable/ic_launcher_background"
android:src="@mipmap/ic_launcher"
android:scaleType="fitCenter"
android:id="@+id/imageView"/>
scaleType 为图片的显示方式,有挺多内容,可以一个个尝试。
效果如图:
SeekBar
SeekBar代码:
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
一个监听器例子代码:
findViewById(R.id.seekBar).setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
}
});
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});