android文字对齐
1. 安卓开发·初恋 第三季之二:常用控件的使用方法
Android 提供大量 UI 控件,合理使用可轻松构建出色界而。本文选取常用控件,详细介绍其使用方法。
新建 UIWidgetTest 项目,允许自动创建活动,使用默认值。
TextView
用于显示文本信息,已熟悉。修改 layout,定义 ID,设置宽高,可选值有:match_parent、fill_parent、wrap_content。match_parent 表示控件大小与父布局一致,fill_parent 等效。wrap_content表示大小刚好包含内容。指定文本内容,运行程序查看效果。
使用 android:gravity 属性指定文字对齐方式,可选值有:top、bottom、left、right、center。设置为 center,效果等同于 center_vertical|center_horizontal。重新运行,文字居中。
调整文字大小和颜色,通过 android:textSize 和 android:textColor。使用 sp 单位。运行程序,查看效果。
TextView 多功能,更多属性查阅文档。
Button
用于交互,可配置属性与 TextView 类似。在布局文件中添加 Button。运行程序,显示效果。禁用默认大写转换,修改属性。为 Button 添加点击事件监听器,使用匿名类或实现接口。
实现监听,运行程序,点击按钮。
EditText
用于用户输入和编辑内容。修改 layout,指定 ID,宽度高度,加入控件属性。运行程序,输入内容。设置 android:hint 属性显示提示文本,重新运行,效果。指定 android:maxLines 属性限制行数,超过时文本滚动,控件不拉伸。
结合 EditText 和 Button,通过点击获取输入内容,实现功能。
ImageView
展示图片控件。准备图片,放置 drawable-xhdpi 目录。在 layout 中使用 android:src 属性指定图片。修改代码,动态更改图片。运行程序,显示图片。
ProgressBar
显示加载进度。修改 layout,运行程序,显示旋转进度条。使用 android:visibility 控制可见性,实现显示与隐藏。指定不同样式,如水平进度条,动态更新进度。
AlertDialog
弹出对话框,用于提示重要信息。在布局中设置标题、内容、关闭按钮,运行程序,点击按钮显示对话框。
ProgressDialog
与 AlertDialog 类似,显示进度条,用于耗时操作。设置标题、内容、取消按钮,运行程序,点击按钮显示进度对话框。注意,设置不能取消,必须在数据加载完成后关闭对话框。
掌握常用控件使用,还需不断学习查阅文档和网上资源。本书后续章节涉及新控件,将做详细讲解。学习控件使用,需在实践中不断探索。
2. Android基础知识
一、activity
1.一个activity就是一个类,继承activity;
2.需要复写onCreate()方法;
3.每一个activity都需要在AndroidMainfest.xml清单上进行配置;
4.为activity添加必要的控件。
二、布局
线性布局:LinearLayout
1.填满父空间:fill_parent、match_parent
2.文本多大空间就有多大:warp_content
3.文字对齐方式:gravity
4.占屏幕的比例:layout_weight="1" 水平方向,则width=0,垂直方向,则height=0
5.一行显示,空间不够会省略:singleLine="ture" false会换行
6.背景:background="#ffffff"
7.水平布局:orientation="horizontal"
垂直布局:orientation="vertivcal"
表格布局:TableLayout
1.内边距:padding
2.外边距:marginLeft\Start、Right\End、Top、Bottom
三、RelativeLayout相对布局
layout_above 将该控件的底部置于给定ID控件之上
layout_below 将该控件的顶部置于给定ID控件之下
layout_toLeftOf 将该控件的右边缘和给定ID控件的左边缘对齐
layout_toRightOf 将该控件的左边缘和给定ID控件的右边缘对齐
layout_alignBaseline 该控件的baseline和给定ID的控件的Baseline对齐
layout_alignBottom 该控件的底部边缘和给定ID的控件的底部边缘对齐
layout_alignLeft 该控件的左边缘和给定ID的控件的左边缘对齐
layout_alignRight 该控件的右边缘和给定ID的控件的右边缘对齐
layout_alignTop 该控件的顶部边缘和给定ID的控件的顶部边缘对齐
layout_alignparentBottom 如果该值为true,则该控件的底部和父控件的底部对齐layout_alignParentLeft 如果该值为true,则该控件的左边和父控件的左边对齐
layout_alignParentRight 如果该值为true,则该控件的右边和父控件的右边对齐
layout_alignParentTop 如果该值为true,则该控件的上边和父控件的上边对齐
layout_centerHorizontal 如果该值为true,则该控件将被置于水平方向的中央
layout_centerInParent 如果该值为true,则该控件将被置于父控件水平和垂直方向的中央
layout_centerVertival 如果该值为true,则该控件将被置于垂直方向的中央
四、一个Intent对象包含一组信息
1.Component name
2.Action
3.Data
4.Category
5.Extras
6.Flags
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent); //startActivity方法
intent.putExtra("Key", "Value"); //键值对
intent = getIntent();
String value = intent.getStringExtra("Key"); //通过键提取数据
五、初级控件:EditText、TextView、Button
1.获取EditText的值
String value = EditText.getText().toString();
2.将值放到Intent对象中
Intent intent = new Intent();
intent.putExtra("one",value )
intent.setCalss(Activity.this, OtherActivity.class);
3.使用这个Intent对象来启动Otheractivity
Activity.this.startActivity(intent);
4.将监听器的对象绑定到按钮对象上
button.setOnclickListener(new Listener());
5.得到Intent对象当中的值
Intent intent = getIntent();
String value1 = intent.getStringExtra("one");
int value2 = Integer.parseInt(value);
六、其他初级控件使用
①ImageView
②RadioGroup和RadioButton
setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener())
③Checkbox
setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener())
④Menu
1.当客户点击MENU按钮的时候,调用onCreateOptionMenu()方法
public boolean onCreateOptionMenu(Menu menu){
menu.add(0,1,1,R.string.id);
}
2.当客户点击MENU内部的具体某一个选项时,调用onOptionItemSelected()方法
public boolean onOptionItemSelected(MenuItem item){
if(item.getItemId() == 1){
finish();
}
return super.onOptionItemSelected(item);
}
七、Activity的生命周期
1.第一次创建时调用
protected void onCreat(Bundle saveInstanceState);
2.显示出来时调用
protected void onStrat();
3.获得用户焦点时调用(可操作)
protected void onResume();
4.点击弹出第二个Activity时调用
protected void onPause();
5.当第一个Activity不可见时调用
protected void onStop();
6.当返回第一个Activity时调用,代替OnCreate,因为没被销毁
protected void onRestart();
7.当返回第一个Activity时调用(先执行onStop,在执行,因为第二个Activity被销毁,不能返回获取,只能通过onCreat,onStart,onResume再创建)
protected void onDestory();
八、Task
1.Task是存放Activity的Stack栈。当点击启动第二个Activiry时,第一个Activtiy会被压入Stack栈当中,第二个Activity会位于栈的顶部;当返回第一个Activtiy时,第二个Activity会被弹出Stack,第一个Activity会位于栈的顶部,以此类推。
注释:当调用finish()时,当前的Activity会被Destory掉,栈中的Activity会消失。
2.当Activity都从Stack退出后,则就不存在Task。
九、高级控件
①进度条ProgressBar
水平进度条style="?android:attr/progressBarStyleHorizontal"
圆圈进度条style="?android:attr/progressBarStyle"
用户可视的visibility="gone"
②列表ListView
十、其他控件
A.下拉菜单Spinner
1.创建一个ArrayAdapter:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, //指上下文对象
R.array.plant_array, //引用了在文件中定义的String数组
android.R.layout.simple_spinner_item);//用来指定Spinner的样式,可替换自定义
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);//设置Spinner当中每个条目的样式
2.得到Spinner对象,并设置数据:
spinner=(spinner)findViewById(R.id.spinnerId);
spinner.setAdapter(adapter);
spinner.setPrompt("测试");//标题
3.创建监听器
class SpinnerOnSelectListener implements OnItemSelectedListener{
@override
public void onItemSelected(
AdapterView<?> adapterView,//整个列表对象
View view,//被选中的具体条目对象
int position,//位置
long id){ //id
String selected = adapterView.getItemAtPosition(position).toString();
}
@override
public void onNothingSelected(AdapterView<?> adapterView){
S.o.p("nothingSelected");
}
}
4.绑定监听器
spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());
注:第二种动态设计
1.创建ArrayList对象
List<String> list = new ArrayList<String>();
list.add("test1");
2. 调用方法
ArrayAdapter adapter = new ArrayAdapter(
this, //指上下文对象
R.layout.item, //引用了指定了下拉菜单的自定义布局文件
R.id.textViewId,//id
list);//数据
3.得到Spinner对象,并设置对象
spinner.setAdapter(adapter);
spinner.setPrompt("测试");//标题
3.创建监听器
class SpinnerOnSelectListener implements OnItemSelectedListener{
@override
public void onItemSelected(
AdapterView<?> adapterView,//整个列表对象
View view,//被选中的具体条目对象
int position,//位置
long id){ //id
String selected = adapterView.getItemAtPosition(position).toString();
}
@override
public void onNothingSelected(AdapterView<?> adapterView){
S.o.p("nothingSelected");
}
}
4.绑定监听器
spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());
B.DatePicker和DatePickerDialog
1.声明一个监听器,使用匿名内部类
DatePickerDialog.OnDateSetListener onDateSetListener
= new DatePivkerDialog.OnDateSetListener(){
public void onDateSet(
DatePicker view,
int year,
int monthOfYear,
int dayOfMonth){
S.o.p(year+"-"+motnOfYear+"-"+dayOfMonth)
}
}
2.复写onCreateDialog(int id)方法:
@override
protected Dialog onCreateDialog(int id){
switch(id){
case DATE_PICKER_ID:
return new DatePickerDialog(this,onDateSetListener,2019,11,25);
}
return null;
}
3.使用时调用showDialog()方法
showDialog(DATE_PICKER_ID);
C.AutoCompleteTextView
B.Widget
C.Animatin
十一、实现ContentProvider过程
1.定义一个CONTENT_URI常量
2.定义一个类,继承ContentProvider
3.实现query、insert、update、delete、getType和onCreate方法
4.在AndroidManifest.xml当中进行声明
3. kindeditor 使用空格对齐文字,在Android中显示不对齐
在Word排版中,调整格式,不能用空格。可以通过分散对齐命令设置,例如下图效果的制作方法: 1、选中需要设置的文本:投标人; 2、单击开始选项卡上如图所示的分散对齐按钮; 2、弹出调整宽度对话框,在新文字宽度输入框中输入4字符即可,如图所示。
4. Android设计规范 Material Design-Layout
Android设计规范Material Design中的Layout(布局)的度量与边框规范如下:
一、度量规范
基准网格对齐:
- 所有组件都与间隔为8dp的基准网格对齐。
- 排版/文字与间隔为4dp的基准网格对齐。
- 工具条中的图标同样与间隔为4dp的基准网格对齐。
边框与间距:
- 移动设备布局模板中,垂直边框和水平外边距左右各有16dp。
- 带有图标或头像的内容有72dp的左边距。
- 在移动设备上有16dp的水平外边距。
- 垂直边距根据具体设计元素和布局需求,可能包括24dp、56dp、48dp、72dp、8dp等不同值。
特定元素的对齐与边距:
- 图标、头像和文本等元素通常左对齐,距左边界72dp。
- 浮动动作按钮(FAB)通常右对齐,大小可能为56dp。
- 在考虑FAB的位置时,可能需要为其他元素设置额外的右边距(如32dp),以确保布局的对齐和美观。
二、边框规范
屏幕边界与元素应用:
- 边框规范详细描述了边框与间距如何应用于屏幕边界和元素。
- 图标(无论大小)通常具有16dp的左右垂直边框。
增量边框:
- 增量边框定义了一个增量(如动作条的高度),然后使用几倍于这个增量的数字来决定应用中其它元素的尺寸和位置。
- 增量边框主要应用于桌面应用程序,部分适用于平板设备,较少应用于移动设备。
触摸目标尺寸:
- 最小的触摸目标尺寸是48dp。
- 在为图标(24dp)或头像(40dp)设置边距时,要确保触摸目标不重叠。
三、总结
Material Design的Layout规范为移动设备、平板设备和桌面应用程序提供了详细的度量与边框指导。这些规范确保了应用的一致性和美观性,同时提高了用户体验。设计师和开发者在创建应用界面时,应遵循这些规范,以确保应用的布局既符合审美标准,又易于用户操作。
5. Android怎么实现spinner的文本居中对齐
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource ( this , R.array. cities , R.layout. spinnerlayout );
spinnerlayout.xml
<?xml version = "1.0" encoding = "utf-8"?>
<TextView xmlns:android="http //schemas android com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" />
这样就可以居中显示了