編輯:關於Android編程
在開發Android應用時,UI布局是一件令人煩惱的事情。下面主要講解一下Android中的界面布局。
線性布局分為:
(1)垂直線性布局;
(2)水平線性布局;
針對這兩種區別,只是一個屬性的區別
水平線性布局的話,android:orientation="horizontal" 即可。
一般線性布局滿足不了們實際項目中的需要,就是一般做Web界面的UI設計一樣,也是存在相對元素的一些CSS樣式的布局。RelativeLayout參數有:Width,Height,Below,AlignTop,ToLeft,Padding,和MerginLeft。
關鍵源碼:
其中,android:layout_below=”@id/label”設置了EditText處於TextView下方;在Button中android:layout_below=”@id/entry”設置該Button位於EditText下。
實例效果:
TableLayout由許多TableRow組成,每個TableRow都會定義一個Row。TableLayout容器不會顯示Row,Column或Cell的邊框線,每個Row擁有0個或多個Cell,每個Cell擁有一個View對象。表格由行和列組成許多單元個,允許單元格為空。但是單元格不能跨列,這與Html不同。
實例效果:
android:gravity="center"書面解釋是權重比。其時就是讓它居中顯示。
android:stretchColumns="1,2,3,4"它的意思就是自動拉伸1,2,3,4列。
若需實現組件居中顯示,布局應如下:
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|center_horizontal"
TableRow平分列
每一列的寬度設置為android:layout_width="0.0dip",在設置每一列的android:layout_weight=“1”
因為ayout_weight是將剩余空間按權重分配,而不是將全部空間按權重分配。
代碼如下:
視圖如下:
切換卡經常用在一下選項上,類似於電話簿界面,通過多個標簽切換顯示不同內容。而其中,TabHost是一個用來存放Tab標簽的容器,通過getTabHost方法來獲取TabHost的對象,通過addTab方法向容器裡添加Tab。Tab在切換時都會產生一個事件,可以通過TabActivity的事件監聽setOnTabChangedListener.
提供選項卡(Tab頁)的窗口視圖容器。此對象包含兩個子對象:一組是用戶可以選擇指定Tab頁的標簽;另一組是FrameLayout用來顯示該Tab頁的內容。個別元素通常控制使用這個容器對象,而不是設置在子元素本身的值。
(譯者madgoat注:即使使用的是單個元素,也最好把它放到容器對象ViewGroup裡)
interface TabHost.OnTabChangeListener
接口定義了當選項卡更改時被調用的回調函數
interface TabHost.TabContentFactory
當某一選項卡被選中時生成選項卡的內容
class TabHost.TabSpec
單獨的選項卡,每個選項卡都有一個選項卡指示符,內容和tag標簽,以便於記錄.。
<framelayout android:id="@android:id/tabcontent" android:layout_height="fill_parent" android:layout_width="fill_parent"> </framelayout>
處理類
//聲明TabHost對象 TabHost mTabHost; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得TabHost對象 mTabHost = getTabHost(); /* 為TabHost添加標簽 */ //新建一個newTabSpec(newTabSpec) //設置其標簽和圖標(setIndicator) //設置內容(setContent) mTabHost.addTab(mTabHost.newTabSpec("tab_test1") .setIndicator("TAB 1",getResources().getDrawable(R.drawable.img1)) .setContent(R.id.textview1)); mTabHost.addTab(mTabHost.newTabSpec("tab_test2") .setIndicator("TAB 2",getResources().getDrawable(R.drawable.img2)) .setContent(R.id.textview2)); mTabHost.addTab(mTabHost.newTabSpec("tab_test3") .setIndicator("TAB 3",getResources().getDrawable(R.drawable.img3)) .setContent(R.id.textview3)); //設置TabHost的背景顏色 mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150)); //設置TabHost的背景圖片資源 //mTabHost.setBackgroundResource(R.drawable.bg0); //設置當前顯示哪一個標簽,默認下標從0開始 mTabHost.setCurrentTab(0); //標簽切換事件處理,setOnTabChangedListener mTabHost.setOnTabChangedListener(new OnTabChangeListener(){ public void onTabChanged(String tabId) { Dialog dialog = new AlertDialog.Builder(Examples_04_29Activity.this) .setTitle("提示") .setMessage("當前選中:"+tabId+"標簽") .setPositiveButton("確定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton){ dialog.cancel(); } }).create();//創建按鈕 dialog.show(); } }); }
實例效果:
最近想弄一個雙導航功能,查看了許多資料,總算是實現了功能,這邊就算是給自己幾個筆記吧! 先來看看效果 那麼就開始實現了! 底部導航欄我選擇用
一、Socket通信簡介Android與服務器的通信方式主要有兩種,一是Http通信,一是Socket通信。兩者的最大差異在於,http連接使用的是“請求&m
今天我們來看一下一個內存洩漏檢測神器 leakcanary(https://github.com/square/leakcanary)首先我們來看一下leakcanary
了解了基本的自定義view基礎後,現在我們就來實踐下自定義view,也是看到我華為手機上自帶的天氣預報軟件後,想著模仿做一個,於是,我自己嘗試了下,雖然不算太像,但是還算