tablelayoutandroid
㈠ 我想在android中設置兩個下拉菜單
android 下拉菜單
1.<?xml version="1.0" encoding="utf-8"?>
12.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
13. android:orientation="vertical" android:gravity="right"
14. android:layout_width="fill_parent" android:layout_height="fill_parent">
15.
19. <FrameLayout android:layout_height="wrap_content"
20. android:layout_width="fill_parent">
21. <TextView android:layout_width="wrap_content"
22. android:layout_height="wrap_content" android:text="FrameLayout">
23. </TextView>
24. <TextView android:layout_width="wrap_content"
25. android:layout_height="wrap_content" android:text="Frame Layout">
26. </TextView>
27. </FrameLayout>
28.
29. <TextView android:layout_width="wrap_content"
30. android:layout_height="wrap_content" android:text="@string/hello" />
31.
39. <TableLayout android:id="@+id/TableLayout01"
40. android:layout_width="fill_parent" android:layout_height="wrap_content"
41. android:collapseColumns="1">
42. <TableRow android:id="@+id/TableRow01" android:layout_width="fill_parent"
43. android:layout_height="wrap_content">
44. <TextView android:layout_width="wrap_content"
45. android:layout_weight="1" android:layout_height="wrap_content"
46. android:text="行1列1" />
47. <TextView android:layout_width="wrap_content"
48. android:layout_weight="1" android:layout_height="wrap_content"
49. android:text="行1列2" />
50. <TextView android:layout_width="wrap_content"
51. android:layout_weight="1" android:layout_height="wrap_content"
52. android:text="行1列3" />
53. </TableRow>
54. <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content"
55. android:layout_height="wrap_content">
56. <TextView android:layout_width="wrap_content"
57. android:layout_height="wrap_content" android:text="行2列1" />
58. </TableRow>
59. </TableLayout>
60.
66. <AbsoluteLayout android:layout_height="wrap_content"
67. android:layout_width="fill_parent">
68. <TextView android:layout_width="wrap_content"
69. android:layout_height="wrap_content" android:text="AbsoluteLayout"
70. android:layout_x="100px"
71. android:layout_y="100px" />
72. </AbsoluteLayout>
73.
81. <RelativeLayout android:id="@+id/RelativeLayout01"
82. android:layout_width="fill_parent" android:layout_height="fill_parent">
83. <TextView android:layout_width="wrap_content" android:id="@+id/abc"
84. android:layout_height="wrap_content" android:text="centerInParent=true"
85. android:layout_centerInParent="true" />
86. <TextView android:layout_width="wrap_content"
87. android:layout_height="wrap_content" android:text="marginLeft=20px"
88. android:layout_marginLeft="20px" />
89. <TextView android:layout_width="wrap_content"
90. android:layout_height="wrap_content" android:text="xxx"
91. android:layout_below="@id/abc" android:layout_alignRight="@id/abc" />
92. </RelativeLayout>
93.
94.</LinearLayout>
95.
96.
97.res/values/strings.xml
98.<?xml version="1.0" encoding="utf-8"?>
99.<resources>
100. <string name="hello">Hello Layout</string>
101. <string name="app_name">webabcd_layout</string>
102.</resources>
103.
104.
105.Main.java
106.
107.代碼
108.package com.webabcd.layout;
109.
110.import android.app.Activity;
111.import android.os.Bundle;
112.
113.public class Main extends Activity {
114. /** Called when the activity is first created. */
115. @Override
116. public void onCreate(Bundle savedInstanceState) {
117. super.onCreate(savedInstanceState);
118. setContentView(R.layout.main);
119. }
120.}
121.
122.
123.2、上下文菜單,選項菜單,子菜單
124.res/layout/main.xml
125.
126.代碼
127.<?xml version="1.0" encoding="utf-8"?>
128.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
129. android:orientation="vertical" android:layout_width="fill_parent"
130. android:layout_height="fill_parent">
131.
132. <TextView android:id="@+id/txt1" android:layout_width="fill_parent"
133. android:layout_height="wrap_content" android:text="@string/hello_contextMenu" />
134.
135. <TextView android:id="@+id/txt2" android:layout_width="fill_parent"
136. android:layout_height="wrap_content" android:text="@string/hello_subMenu" />
137.
138.</LinearLayout>
139.
140.
141.res/values/strings.xml
142.
143.代碼
144.<?xml version="1.0" encoding="utf-8"?>
145.<resources>
146. <string name="hello_contextMenu">Hello Context Menu</string>
147. <string name="hello_subMenu">Hello Context Sub Menu</string>
148. <string name="app_name">webabcd_menu</string>
149.</resources>
150.
151.
152.Main.java
153.
154.代碼
155.package com.webabcd.menu;
156.
157.import android.app.Activity;
158.import android.os.Bundle;
159.import android.view.ContextMenu;
160.import android.view.Menu;
161.import android.view.MenuItem;
162.import android.view.SubMenu;
163.import android.view.View;
164.import android.view.ContextMenu.ContextMenuInfo;
165.import android.widget.TextView;
166.import android.widget.Toast;
167.
168.// 演示兩種菜單的實現方式:上下文菜單(通過在某元素上長按,來呼出菜單)和選項菜單(通過按手機上的菜單按鈕,來呼出菜單)
169.public class Main extends Activity {
170. /** Called when the activity is first created. */
171. @Override
172. public void onCreate(Bundle savedInstanceState) {
173. super.onCreate(savedInstanceState);
174. setContentView(R.layout.main);
175.
176. // 為 R.id.txt1 注冊一個上下文菜單(在此 TextView 上長按,則會呼出上下文菜單)
177. // 具體呼出的菜單內容需要重寫 onCreateContextMenu 來創建
178. TextView txt1 = (TextView) this.findViewById(R.id.txt1);
179. this.registerForContextMenu(txt1);
180.
181. // 為 R.id.txt2 注冊一個上下文菜單
182. TextView txt2 = (TextView) this.findViewById(R.id.txt2);
183. this.registerForContextMenu(txt2);
184. }
185.
186. // 重寫 onCreateContextMenu 用以創建上下文菜單
187. // 重寫 onContextItemSelected 用以響應上下文菜單
188. @Override
189. public void onCreateContextMenu(ContextMenu menu, View v,
190. ContextMenuInfo menuInfo) {
191. super.onCreateContextMenu(menu, v, menuInfo);
192.
193. // 創建 R.id.txt1 的上下文菜單
194. if (v == (TextView) this.findViewById(R.id.txt1)) {
195.
196. // ContextMenu.setIcon() - 設置菜單的圖標
197. // ContextMenu.setHeaderTitle() - 設置菜單的標題
198. menu.setHeaderIcon(R.drawable.icon01);
199. menu.setHeaderTitle("我是菜單");
200.
201. // 用 ContextMenu.add() 來增加菜單項,返回值為 MenuItem
202. // 第一個參數:組ID
203. // 第二個參數:菜單項ID
204. // 第三個參數:順序號
205. // 第四個參數:菜單項上顯示的內容
206. menu.add(1, 0, 0, "菜單1");
207.
208. // MenuItem - 新增菜單項後的返回類型,針對菜單項的其他設置在此對象上操作
209. menu.add(1, 1, 1, "菜單2").setCheckable(true);
210.
211. }
212. // 創建 R.id.txt2 的上下文菜單(多級上下文菜單)
213. else if (v == (TextView) this.findViewById(R.id.txt2)) {
214.
215. // ContextMenu.addSubMenu("菜單名稱") - 用來添加子菜單。子菜單其實就是一個特殊的菜單
216. SubMenu sub = menu.addSubMenu("父菜單1");
217. sub.setIcon(R.drawable.icon01);
218. sub.add(0, 0, 0, "菜單1");
219. sub.add(0, 1, 1, "菜單2");
220. sub.setGroupCheckable(1, true, true);
221.
222. SubMenu sub2 = menu.addSubMenu("父菜單2");
223. sub2.setIcon(R.drawable.icon01);
224. sub2.add(1, 0, 0, "菜單3");
225. sub2.add(1, 1, 1, "菜單4");
226. sub2.setGroupCheckable(1, true, false);
227.
228. }
229. }
230.
231.
232. // 重寫 onCreateOptionsMenu 用以創建選項菜單
233. @Override
234. public boolean onCreateOptionsMenu(Menu menu) {
235.
236. MenuItem menuItem = menu.add(0, 0, 0, "菜單111111111111111111111");
237.
238. // MenuItem.setIcon() - 設置菜單項的圖標
239. // MenuItem.setTitleCondensed() - 菜單的簡標題,如果指定了簡標題的話,菜單項上的標題將會以此簡標題為准
240. // MenuItem.setAlphabeticShortcut() - 設置選中此菜單項的快捷鍵
241. // 註:菜單項超過 6 個的話,第 6 個菜單將會變為 More 菜單,多餘的菜單會在單擊 More 菜單之後顯示出來
242. menuItem.setIcon(R.drawable.icon01);
243. menuItem.setTitleCondensed("菜單1");
244. menuItem.setAlphabeticShortcut('a');
245.
246. menu.add(0, 1, 1, "菜單2").setIcon(R.drawable.icon02);
247. menu.add(0, 2, 2, "菜單3").setIcon(R.drawable.icon03);
248. menu.add(0, 3, 3, "菜單4");
249. menu.add(0, 4, 4, "菜單5");
250. menu.add(0, 5, 5, "菜單6");
251. menu.add(0, 6, 6, "菜單7").setIcon(R.drawable.icon04);
252. menu.add(0, 7, 7, "菜單8").setIcon(R.drawable.icon05);
253.
254. return true;
255. }
256.
257. // 重寫 onOptionsItemSelected 用以響應選項菜單
258. @Override
259. public boolean onOptionsItemSelected(MenuItem item) {
260. super.onOptionsItemSelected(item);
261.
262. Toast.makeText(Main.this, "被單擊的菜單項為:" + String.valueOf(item.getItemId()), Toast.LENGTH_SHORT).show();
263.
264. return false;
265. }
266.}
㈡ android在寫tablelayout時,效果如下,請問高手如何才能使我的表格占滿整個屏幕,並且格與格之間沒有間隙啊
在每一行的tablerow屬性中也要加上權重1代表平均分成三行
android:layout_weight="1"
邊框線並不在table的范疇,因為放大來看,button控制項的邊框和tablerow的邊框是重合的,意味著這個空隙是button控制項自帶的,tablerow邊框設置無效。
㈢ android怎麼給tablerow添加邊框
總結一下android ui界面裡面如何設置邊框,以及如何把邊框設置成弧形的即圓角。
其實,android的ui里,界面一般都是比較簡單的,不會像web頁面那樣,數據量比較大,關於給android界面(表格)設置邊框,其思想很想我們用HTML設計表格然後給它設置邊框,如果你懂html的話。即通過給不同的控制項設置背景顏色來反襯出邊框線
以一個登錄界面為例,設置一個有邊框線的android 登錄界面:
註:本例要求的只是將該TableLayout中的行與行之間用邊框線隔開
此例中,採用TableLayout布局,非常簡單,裡面有3個TableRow,分別放置 用戶名、密碼、登錄按鈕,根據上面說的設置邊框線只需要設置控制項的背景顏色即可。這個例子中要求行與行之間有邊框線,那麼,就這么想,
TableLayout:是該界面的布局管理器(當然也是一個控制項),放在最外層,那麼這時你可以給它選一個背景顏色參考注釋 a)
TableRow:是表格中的一行,設置邊框線重點就在此,它是緊跟著TableLayout的,可以給TableRow(行)設置背景色,參考b)
TableLayout與TableRow關系:可以看成父與子的關系,那麼不管怎麼樣,TableLayout總是大於TableRow,那麼通過給二者設置不同的顏色,設置顏色的時候可以讓子組件(TableRow)周圍稍微留出一點邊界(就是它的背景色不會覆蓋完整個行,如何讓它顯示成這樣呢=====>android:layout_margin="0.5dip"[此屬性即是設置該組件周圍留出一點邊界])
<?xml version="1.0" encoding="UTF-8"?>
<TableLayout
android:id="@+id/widget30"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ffcccccc" //a)給tablelayout設置背景色,改背景顏色將會是你要設置的邊框線的背景色
android:layout_margin="1dip"
>
<!--android:background="@drawable/view_shape" -->
<TableRow
android:id="@+id/widget40"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffffcc99" //b)給tablerow設置背景色
android:layout_margin="0.5dip" //c)非常重要的一點
>
<TextView
android:id="@+id/widget41"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login Name"
android:textStyle="bold"
android:layout_gravity="center_vertical" //如果想讓表格里的列與列(column之間)也有邊框線隔開,則同上面一樣也要設置android:background="#ffffcc99"與android:layout_margin="0.5dip"
>
</TextView>
<EditText
android:id="@+id/widget42"
android:layout_width="141px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:background="#ffffffff"
android:textColor="#ff000000"
>
</EditText>
</TableRow>
<TableRow
android:id="@+id/widget43"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffffcc99"
android:layout_margin="0.5dip"
>
<TextView
android:id="@+id/widget44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password"
android:textStyle="bold"
>
</TextView>
<EditText
android:id="@+id/widget45"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:background="#ffffffff"
android:textColor="#ff000000"
>
</EditText>
</TableRow>
<Button
android:id="@+id/widget46"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:textStyle="bold"
android:textColor="#ff000000"
android:layout_margin="2dip"
android:background="#ffffcc33"
>
<!--android:background="@drawable/view_shape" -->
</Button>
</TableLayout>
㈣ Android零基礎入門第60節:日歷視圖CalendarView和定時器Chronometer
上一期學習了時鍾組件,本期繼續深入學習日歷視圖CalendarView和定時器Chronometer。日歷視圖可用於顯示和選擇日期,通過調用setOnDateChangeListener()方法可監控日期改變。常用屬性包括日期格式、基準時間等。接下來,我們將通過示常式序學習CalendarView的使用,使用指定布局文件並運行程序,可以看到日期選擇界面效果。
接下來,我們將學習Chronometer定時器,它可通過setBase()方法設置基準時間開始計數,不設置基準時間將使用調用start()方法時的時間。默認顯示時間格式為"MM:SS"或"H:MM:SS",也可自定義格式。Chronometer的重要屬性包括格式設置、開始計時、停止計時等。接下來,我們通過示常式序學習Chronometer的使用,使用指定布局文件並運行程序,可以看到定時器界面效果。
至此,關於時間和日期類組件的學習基本完成。你是否已經掌握了這些組件的使用?如果還有疑問,歡迎在下方留言討論,或加入Android零基礎入門技術討論微信群,共同成長!
版權聲明:本文版權為微信公眾號分享達人秀(ShareExpert)——鑫鱻所有,未經作者授權,不得擅自轉載。
往期總結分享:
Android零基礎入門第1節:Android的前世今生
Android零基礎入門第2節:Android系統架構和應用組件
Android零基礎入門第3節:Android開發環境入門
Android零基礎入門第4節:正確安裝和配置JDK
Android零基礎入門第5節:ADT Bundle的高效使用
Android零基礎入門第6節:SDK Manager配置優化
Android零基礎入門第7節:Android模擬器配置
Android零基礎入門第8節:編寫第一個HelloWorld應用
Android零基礎入門第9節:Android應用實戰:無需代碼也能開發
Android零基礎入門第10節:升級開發IDE:Android Studio
Android零基礎入門第11節:運行Android Studio工程
Android零基礎入門第12節:熟悉Android Studio界面
Android零基礎入門第13節:優化Android Studio開發工具
Android零基礎入門第14節:使用Genymotion加速開發
Android零基礎入門第15節:Android Studio項目結構應用
Android零基礎入門第16節:用戶界面開發基礎
Android零基礎入門第17節:文本框TextView的使用
Android零基礎入門第18節:輸入框EditText的使用
Android零基礎入門第19節:按鈕Button的基本操作
Android零基礎入門第20節:復選框CheckBox和單選按鈕RadioButton的使用
Android零基礎入門第21節:開關組件ToggleButton和Switch的應用
Android零基礎入門第22節:圖像視圖ImageView的使用
Android零基礎入門第23節:圖像按鈕ImageButton和縮放按鈕ZoomButton的使用
Android零基礎入門第24節:自定義View的簡單使用
Android零基礎入門第25節:簡單且常用的LinearLayout布局
Android零基礎入門第26節:布局對齊方式對比
Android零基礎入門第27節:正確使用padding和margin
Android零基礎入門第28節:RelativeLayout相對布局的使用
Android零基礎入門第29節:TableLayout表格布局
Android零基礎入門第30節:FrameLayout幀布局應用
Android零基礎入門第31節:AbsoluteLayout絕對布局的使用
Android零基礎入門第32節:新推出的GridLayout網格布局
Android零基礎入門第33節:Android事件處理概述
Android零基礎入門第34節:監聽事件處理
Android零基礎入門第35節:回調事件處理
Android零基礎入門第36節:系統事件處理
Android零基礎入門第37節:ListView組件介紹
Android零基礎入門第38節:Adapter組件介紹
Android零基礎入門第39節:ListActivity和自定義列表項
Android零基礎入門第40節:自定義ArrayAdapter
Android零基礎入門第41節:使用SimpleAdapter
Android零基礎入門第42節:自定義BaseAdapter
Android零基礎入門第43節:ListView優化和列表首尾使用
Android零基礎入門第44節:ListView數據動態更新
Android零基礎入門第45節:GridView網格視圖
Android零基礎入門第46節:Spinner列表選項框
Android零基礎入門第47節:AutoCompleteTextView自動完成文本框
Android零基礎入門第48節:ExpandableListView可折疊列表
Android零基礎入門第49節:AdapterViewFlipper圖片輪播
Android零基礎入門第50節:StackView卡片堆疊
Android零基礎入門第51節:ProgressBar進度條
Android零基礎入門第52節:自定義ProgressBar炫酷進度條
Android零基礎入門第53節:SeekBar拖動條和RatingBar星級評分條
Android零基礎入門第54節:ViewSwitcher視圖切換組件
Android零基礎入門第55節:ImageSwitcher和TextSwitcher
Android零基礎入門第56節:ViewFlipper翻轉視圖
Android零基礎入門第57節:DatePicker和TimePicker選擇器
Android零基礎入門第58節:NumberPicker數值選擇器
Android零基礎入門第59節:Clock時鍾組件
掃碼了解更多內容:
㈤ android的:tableLayout和gridview有什麼不同
tableLayout是表格布局,用的比較少,實現如下圖所示效果