属性 | 用途 | 备注 |
---|---|---|
android:id | 唯一标识 | |
android:layout_height | 高度 | 自定义(单位dp) match_parent(与父布局相同) wrap_content(由控件内容决定控件大小) |
android:layout_width | 宽度 | 自定义(单位dp) match_parent(与父布局相同) wrap_content(由控件内容决定控件大小) |
android:gravity | 对齐方式 | 以下都可以用 | 来组合: top(上) bottom(下) left(左) right(右) center(居中) center_horizontal(水平居中) center_vertical(垂直居中) clip_horizontal(超出控件左右两边的剪掉) clip_vertical(超出控件上下两边的剪掉) fill(充满整个控件) fill_horizontal(水平充满) fill_vertical(垂直充满) start/end(与阅读顺序相关) |
android:textSize | 字体大小 | 单位(sp) |
android:textColor | 字体颜色 | 有很多就不列举了 |
举例:
属性与TextView差不多,text为英文的话会默认自动转换成大写英文,想关闭则``android:textAllCaps="false `即可。
设置完按钮的布局,还需要添加监听器,这样按下按钮才会有响应,有两种方法:
①在对应活动的java文件中添加监听器,如:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //在此处添加逻辑
Intent intent = new Intent(SecondActivity.this,
ThirdActivity.class);
startActivity(intent);
}
});
}
②用实现接口的方式来注册监听器,如:
(在试用的时候不知道为什么会出现异常情况让我退出APP,个人还是比较喜欢用第一种方法)
发现是布局问题,相对布局默认是重叠在一起的。我是按了一下Infer Constraints即可
用于展示图片,资源一般放在drawtable中。
举例:
①先在res下新建一个目录drawable-xhdpi,把选好的两张图片放入此目录中
(我是直接找到这个项目文件夹然后新建文件夹添加图片的路径:ActivityTest–>appsrc–>main–>
res–>drawable-xhdpi)
②在activity-third中添加ImageView控件(我是通过添加代码来添加控件,然后手动拖动控件调整位置)
按钮响应事件为换一张(记录点击次数,奇数就显示img_1,偶数img_2)
③效果
有正常的直的进度条和圆形进度条,style="?android:attr/progressBarStyleHorizontal"则指定为水平进度条,通过setProgress()来设置进度。
通过android: visibility来控制是否可见,三个可选,不指定时默认可见
名 | 效果 |
---|---|
visible | 可见 |
invisible | 不可见但占用屏幕空间 |
gone | 不可见且不占用屏幕空间 |
此对话框为置顶于所有界面元素之上,能屏蔽其他空间的交互功能,一般用于提示重要信息。
举例:这里当进度条满了之后再按按钮将会出现提示
progressBar1.setVisibility(View.INVISIBLE);
AlertDialog.Builder dialog = new AlertDialog.Builder(ThirdActivity.this);
dialog.setTitle("提示"); //对话框标题
dialog.setMessage("Something important."); //提示内容
dialog.setCancelable(false);
//如果没有这行则默认为true,则不需要点下面设置的按钮就能退出
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
//"确定"按钮点击事件setPositiveButton
@Override
public void onClick(DialogInterface dialog, int which) {
//可自行设置逻辑
}
});
dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
//"取消"按钮点击事件setNegativeButton
@Override
public void onClick(DialogInterface dialog, int which) {
//可自行设置逻辑
}
});
dialog.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//可自行设置逻辑
}
});
dialog.show();//显示对话框
类似AlertDialog对话框,但ProgressDialog会显示圆形进度条,我想试试看效果可是一直显示Cannot resolve symbol “ProgressDialog”,经过查询发现说是在API level 26 中,ProgressDialog被声明不赞成使用,应使用的替代方法是ProgressBar,所以就没有再进行尝试了。
常用属性:
属性名 | 用途 |
---|---|
android:divider | 列表之间绘制的颜色或者图片,不需要则设置为**"@null"** |
android:dividerHeight | divider 的高度 |
android:stackFromBottom | 内容从底部开始显示,默认false 从顶部开始显示 |
android:transcriptMode | 设置列表添加新的选项的时候,是否自动滑动到底部,显示新的选项(默认为disabled,也可选择normal或者alwaysScroll) |
常用方法:
方法名 | 用途 |
---|---|
setEmptyView(View) | 设置ListView没有数据时展示的布局 |
setHeaderView() | 添加一个/多个头部布局(动态加载) |
setFooterView() | 添加一个/多个尾部布局(动态加载) |
关于适配器(都是继承 BaseAdapter这个抽象类的):
适配器 | 释义 |
---|---|
ArrayAdapter | 使用最为简单,以数据集合为基础,只显示一行文本 |
SimpleAdapter | 具有很好的扩展性,可以自定义出各种各样的布局 |
SimpleCursorAdapter | 可以方便的把数据库的内容通过列表的形式展现出来 |
简单举例
①将ListView控件占满整个布局
②在对应的java文件中给一些数据,通过适配器传递给ListView显示
public class FifthActivity extends AppCompatActivity {
private String[] data = {"a","b","c","d","e","f","g","h","i","j",
"k","l","m","n","o","p","q","r","s","t"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fifth);
ArrayAdapter adapter = new ArrayAdapter(
FifthActivity.this,android.R.layout.simple_list_item_1,
data);
ListView listView = (ListView) findViewById(R.id.List_view);
listView.setAdapter(adapter);
}
}
①提前创建一个layout用于放单独一个item所需要的控件
②在java文件中加适配器,把相匹配的(图片,文字)与①连接:
public class FifthActivity extends AppCompatActivity {
//文字
private String[] data = {"a","b","c","d","e","f","g","h","i","j",
"k","l","m","n","o","p","q","r","s","t"};
//图片
private int[] image = {R.drawable.a,R.drawable.b,R.drawable.c,
R.drawable.d,R.drawable.e,R.drawable.f,
R.drawable.g,R.drawable.h,R.drawable.i,
R.drawable.j,R.drawable.k,R.drawable.l,
R.drawable.m,R.drawable.n,R.drawable.o,
R.drawable.p,R.drawable.q,R.drawable.r,
R.drawable.s,R.drawable.t};
//定义适配器对象
private List
个人觉得《第一行代码》中的举例有点杂,所以找了篇博客来模仿
大神的博客
这个没有尝试,找了篇博客
博客在此
在找RecyclerView的过程中发现了万能适配器这个说法,然后就找了一下,果然也有ListView的万能适配器,在这就先不深入,看完基础再回头深入
万能适配器
由于RecyclerView内容比较多单独拿出来作为一篇
RecyclerView(ListView的进阶版)