Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

时间:2022-09-08 12:20:41

前言

不同於iOS, Xamarin 在Visual Studio中針對Android, 可以直接設計使用者介面. 在本篇教學文章中, 筆者會針對Android的專案目錄結構以及基本控制項進行介紹, 包含TextView, EditView, Toggle/ Switch以及Seekbar控制項.

Android 專案目錄結構

在Visual Studio建立Android 應用程式專案後, 在方案總管中會看到如下圖的目錄結構:

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

Assets: 放置在Assets資料夾中的檔案, 將會一起被封裝進Android的封裝檔中(建置動作要設定為"AndroidAsset"). 之後便可以透過如下的陳述式來存取Assets的資源。

1 public class ReadAsset : Activity
2  
3 {
4  
5 protected override void OnCreate (Bundle bundle) {
6  
7 base.OnCreate (bundle);
8  
9 InputStream input = Assets.Open ("my_asset.txt");}}

Resources包含Drawable, Layout以及Values資料夾. Drawable用來放置圖片. 依照裝置的解析度不同, 還可以新增drawable-hdpi, drawable-mdpi, drawable-ldpi等資料夾來存放不同解析度的檔案. Layout資料夾則是存放使用者介面檔(副檔名為.axml). 而Value資料夾則是可以存放不同型別的XML對應檔, 例如styles.xml, colors.xml… 針對Resources底下的檔案, 建置動作請設定為”AndroidResource”

若您開啟預設的Main.axml, 會看到如同底下的XML描述

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

  • LinearLayout: 主要的頁面框架, 以垂直或水平的方式排列頁面上的物件, 相當於Silverlight 中的stack panel
  • @+id/[物件名稱]: 告訴Android parser, 為物件建立一個resource id
  • @string/[名稱]: 在String.xml中建立一個字串資源, 後續可供Resource類別存取.

上述的@string則會對應到資料夾Resources\Values\String.xml

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

  • 名稱Hello對應到UI中Button的Text屬性
  • 名稱ApplicationName對應到專案屬性中的應用程式名稱
  • 名稱Hello2為自行定義的字串資源.

有了以上的基本概念後, 接下來我們來介紹Android的基本控制項。

 

TextView

1. 開啟Lab03-BasicControls 專案並開啟Layout資料夾下的TextView.axml

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

2. 從左邊的工具列將TextView拖放到畫面中, 雙擊TextView並編輯文字

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

3. 接著拖拉一個TextView, 並在右邊的屬性視窗設定textcolor為#2A3748, textsize為24dip

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

4. 再拖拉一個TextView並輸入文字, 包含一個超連結. 在屬性中將autolink的屬性值改為web.

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

結果如下:連結文字會自動變成超連結.

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

5. 最後拖拉一個TextView並輸入文字, 包含超過5位數的數字, 在屬性中將autolink的屬性值改為phone

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

結果如下: 數字被更改為超連結

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

6. 開啟TextViewScreen.cs 並在OnCreate 事件中載入Layout中的TextView

SetContentView(Resource.Layout.TextView);

7. 執行專案並檢視及操作有連結的TextView內容.

EditText

1. 開啟Layout資料夾下的EditText.axml

2. 從工具箱中拖拉1個Text(Small)及1個Plain Text物件到畫面上並編輯Text的文字如下:

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

將屬性中的autoText設為true

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

3. 拖拉一組Text及Plain Text物件到畫面上並編輯Text的文字如下:

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

將屬性中的capitalize設為words.

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

4. 拖拉一組Text及password物件到畫面上並編輯Text的文字如下:

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

5. 開啟EditTextScreen.cs 並在OnCreate 事件中載入Layout中的TextView

SetContentView(Resource.Layout.EditText);

6. 執行專案, 在第一個欄位輸入錯的單字, 將會出現拚字錯誤及建議視窗.

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

7. 其他欄位效果如下:

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

Switch / Toggle button

Switch跟Toggle其實是很相似的控制項, 都是控制開和關的選項, 但顯示的方式有所不同. 我們在同一個練習中使用這2個控制項. (註: Switch控制項是在Android 4.0(API14)後才有, 因此在工具箱中找不到此控制項, 必須在XML中自行輸入. 此外, 您的模擬器也必須是Android 4.0以上才能執行)

1. 開啟SwitchToggle.axml. 在畫面上依序部署1個TextView, 用來顯示訊息, 1個ToggleButton以及1個Switch控制項. 如下圖所示:

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

Axml的宣告如下, 請微調部份屬性:

01 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
02  
03 android:orientation="vertical"
04  
05 android:layout_width="fill_parent"
06  
07 android:layout_height="fill_parent">
08  
09 <TextView
10  
11 android:textAppearance="?android:attr/textAppearanceMedium"
12  
13 android:layout_width="fill_parent"
14  
15 android:layout_height="wrap_content"
16  
17 android:id="@+id/textView1" />
18  
19 <ToggleButton
20  
21 android:layout_width="fill_parent"
22  
23 android:layout_height="wrap_content"
24  
25 android:id="@+id/toggleButton1"
26  
27 android:textOn="開"
28  
29 android:textOff="關"
30  
31 android:layout_marginBottom="6.7dp" />
32  
33 <Switch
34  
35 android:layout_width="fill_parent"
36  
37 android:layout_height="wrap_content"
38  
39 android:textOn="開"
40  
41 android:textOff="關"
42  
43 android:id="@+id/Switch1"
44  
45 android:layout_marginRight="225.3dp" />
46  
47 </LinearLayout>

 

2. 開啟SwitchToggleScreen.cs. 並撰寫以下程式碼.

01 //載入頁面
02  
03 SetContentView(Resource.Layout.SwitchToggle);
04  
05 //宣告並取得控制項實體
06  
07 ToggleButton toggle = FindViewById<ToggleButton>(Resource.Id.toggleButton1);
08  
09 Switch _switch = FindViewById<Switch>(Resource.Id.Switch1);
10  
11 TextView msg = FindViewById<TextView>(Resource.Id.textView1);
12  
13 //處理Toggle Button的Click事件, 並將狀態顯示在TextView
14  
15 toggle.Click+= (sender, e) => {
16  
17 if (toggle.Checked) {
18  
19 msg.Text = "目前Toggle Button的狀態是\"開\"";}
20  
21 else{
22  
23 msg.Text = "目前Toggle Button的狀態是\"關\"";};};
24  
25 //處理Switch的Click事件, 並將狀態顯示在TextView
26  
27 _switch.Click += (sender, e) => {
28  
29 if (_switch.Checked) {
30  
31 msg.Text = "目前Switch Button的狀態是\"開\"";}
32  
33 else{
34  
35 msg.Text = "目前Switch Button的狀態是\"關\"";};};

Toggle Button及Switch 控制項的操作幾乎完全相同, 主要就是處理控制項的click事件並判斷目前的開關狀況.

3. 執行專案並檢視執行結果.

Seek Bar

1. 開啟seekBar.axml並從工具箱拖放TextView及SeekBar控制項進螢幕

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

 

介面宣告的xml如下:

01 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
02  
03 android:orientation="vertical"
04  
05 android:layout_width="fill_parent"
06  
07 android:layout_height="fill_parent">
08  
09 <TextView
10  
11 android:textAppearance="?android:attr/textAppearanceMedium"
12  
13 android:layout_width="fill_parent"
14  
15 android:layout_height="wrap_content"
16  
17 android:id="@+id/textView1" />
18  
19 <SeekBar
20  
21 android:layout_width="fill_parent"
22  
23 android:layout_height="wrap_content"
24  
25 android:id="@+id/seekBar1"
26  
27 android:layout_marginTop="48.0dp" />
28  
29 </LinearLayout>

2. 開啟SeekBarScreen.cs並在OnCreate事件中撰寫以下程式碼:

01 //載入頁面
02  
03 SetContentView(Resource.Layout.SeekBar);
04  
05 //宣告並取得頁面上的控制項
06  
07 var msg = FindViewById<TextView>(Resource.Id.textView1);
08  
09 var seekbar = FindViewById<SeekBar>(Resource.Id.seekBar1);
10  
11 //將seekBar的最大值設定為100
12  
13 seekbar.Max = 100;
14  
15 //處理SeekBar的ProgressChanged事件, 並將目前的大小(進度)透過TextView呈現
16  
17 seekbar.ProgressChanged += (sender, e) => {
18  
19 msg.Text = string.Format("目前Seekbar的大小為{0}", seekbar.Progress.ToString());
20  
21 };

SeekBar的操作非常的直覺. 您只需要處理SeekBar控制項的ProgressChanged事件即可.

3. 執行專案並檢視執行結果.

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

結語

Android 的開發方式, 與先前介紹的iOS略有不同. iOS透過Outlet及Action將View及Controller進行連結. 而Android 則是透過Parser, 為頁面上的控制項建立id屬性, 讓Activity可以透過FindViewById方式建立控制項的物件實體, 接下來的處理方式就與iOS或Windows Form在操作控制項的方式類似. 在下一篇教學文章中, 將說明Android應用程式的多頁面處理.

Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)的更多相关文章

  1. Visual Studio 跨平台開發實戰&lpar;2&rpar; - Xamarin&period;iOS 基本控制項介紹 &lpar;转帖&rpar;

    前言 在上一篇文章中, 我們介紹了Xamarin 以及簡單的HelloWorld範例, 這次我們針對iOS的專案目錄架構以及基本控制項進行說明. 包含UIButton,, UISlider, UISw ...

  2. Visual Studio 跨平台開發實戰&lpar;5&rpar; - Xamarin Android 多頁面應用程式開發 (转帖)

    前言 大部份的Android 都具有實體或虛擬的Back鍵. 因此在處理多頁面應用程式時, 與先前所介紹的iOS Navigation controller 比較起來會簡單許多. 1. 開啟Visua ...

  3. Visual Studio 跨平台開發實戰&lpar;3&rpar; - Xamarin iOS 多頁面應用程式開發 &lpar;转帖&rpar;

    前言 在前一篇教學中, 我們學會如何使用Visual Studio 搭配Xcode 進行iOS基本控制項的操作. 但都是屬於單一畫面的應用程式. 這次我們要來練習如何透過Navigation Cont ...

  4. Visual Studio 跨平台開發實戰&lpar;1&rpar; - Hello Xamarin&excl; &lpar;转帖&rpar;

    前言 應用程式發展的腳步, 從來沒有停過. 從早期的Windows 應用程式, 到網路時代的web 應用程式, 再到近幾年相當盛行的行動裝置應用程式(Mobile Application), 身為C# ...

  5. Visual Studio跨平台开发Xamarin

    *微软的一系列Visual Studio跨平台开发Xamarin的资料,上面还有视频.具体参看 http://www.microsoft.com/*/newsletter/library/ ...

  6. RTX的api開發實例

    RTX的api開發實例 最近接觸了RTX的接口開發部份,RTX其实有很多玩法,除了可以用自帶的客戶端發消息之外還可以用PHP調用API的方式來做一些事情,下邊整理了一下分享給大家 值得提醒的是这些接口 ...

  7. Visual Studio跨平台开发实战&lpar;5&rpar; - Xamarin Android多页面应用程式开发

    原文 Visual Studio跨平台开发实战(5) - Xamarin Android多页面应用程式开发 前言 大部份的Andr​​oid 都具有实体或虚拟的Back键. 因此在处理多页面应用程式时 ...

  8. Visual Studio跨平台开发实战&lpar;4&rpar; - Xamarin Android基本控制项介绍

    原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...

  9. Visual Studio跨平台开发实战&lpar;3&rpar; - Xamarin iOS多页面应用程式开发

    原文 Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发 前言 在前一篇教学中, 我们学会如何使用Visual Studio 搭配Xcode 进行iOS基本控 ...

随机推荐

  1. 【2016-08-21】Linux内核版本编号规则简介

    我们已经了解可以使用下面的几天命令来查看Linux内核版本及Ubuntu发行版本的信息: uname -r uname -a cat /proc/version lsb-release -a 等等 可 ...

  2. 轮播图切换 纯html&plus;js&plus;css

    如图所示. 该图片切换特效实现很简单,而且兼容性很好. html页面如下 复制代码代码如下: <div class="wrapper"> <div id=&quo ...

  3. bootstrap 按钮 文本 浮动 隐藏

    bootstrap 按钮 文本 浮动 隐藏 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  4. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  5. 关于spring的IOC和DI的xml以及注解的简单介绍

    xml 一 目的:通过ApplicationContext对象的getBean方法获取所需类的对象. 编写一个service类 public class service { private Strin ...

  6. ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。

    js 监听ios手机键盘弹起和收起的事件 /* js 监听ios手机键盘弹起和收起的事件 */ document.body.addEventListener('focusin', () => { ...

  7. Delphi 项目配置选项

    打开项目设置窗口: 通过菜单:项目>选项 快捷键    :Shift+Ctrl+F11 Delphi编译器选项说明  Conditional defines 指定条件编译器指令中引用的符号. O ...

  8. eclipse2019-03设置代码编辑区背景为图片

    一.我的主题设置如下所示 二.找到如下所示或类似的文件夹 三.在该文件夹里的images文件夹里添加图片 四.在CSS目录下的e4-dark_win.css文件中添加如下代码 .MPart Style ...

  9. datetime处理日期和时间

    datetime.now() # 获取当前datetimedatetime.utcnow() datetime(2017, 5, 23, 12, 20) # 用指定日期时间创建datetime 一.将 ...

  10. Kafka文件存储机制

    一.topic中partition存储分布 在本地的kafka中,我们只启动一个broker,创建两个topic:single-todo和single-todo-vip ,每个topic有两个part ...