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" />
這樣就可以居中顯示了