網頁

2014年7月26日 星期六

10.Android的Widget之輸入類別

Android提供EditText供使用者輸入資料,EditText所撰寫的方法非常的簡單,而它的屬性也很好理解,android:hint用來設定EditText提示的文字,android:password用來設定輸入的內容是否隱藏起來,參考下面的範例。 <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="帳號" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:password="true" android:hint="密碼" />
執行結果:

輸入後的結果:
AutoCompleteTextView同樣也是能夠給使用者輸入資料,不過它能夠提供自動提示的輸入功能,例如當輸入a的時候就會跑出apple、address、alert等等的提示,下面是xml檔和執行的結果圖。
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="你最喜歡的程式語言是什麼?" /> <AutoCompleteTextView android:id="@+id/autoCompleteTextView" android:layout_width="match_parent" android:layout_height="wrap_content" />
AutoCompleteTextView要有自動提示的文字必須要自己手動加入,這些文字可以在xml檔加入也可以在程式碼當中加入,下面是程式碼範例:
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.*; public class MainActivity extends Activity { final String[] language = {"C","C++","C#","Java","VB","JSP","Android","ASP.NET","PHP","Python"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,language); AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById (R.id.autoCompleteTextView); autoCompleteTextView.setThreshold(1); autoCompleteTextView.setAdapter(adapter); } }
上面的程式範例中將想顯示的自動提示放入陣列中,並使用ArrayAdapter進行實作,ArrayAdapter能夠儲存字串陣列並且放入Android的List物件,最後setThreshold這個屬性是用來設定輸入多少字元會出現提示的文字,在範例中設定的值是1,因此輸入第一個字元之後就會有提示的文字,setAdapter是用來設定使用哪個ArrayAdapter

MultiAutoCompleteTextViewAutoCompleteTextView都具有自動提示的功能,不同的地方是允許多個值可以自動提示的功能,程式的寫法與AutoCompleteTextView差不多,不過加入了一個分隔符號的屬性setTokenizer設定每個值之間的分隔符號。
new MultiAutoCompleteTextView.CommaTokenizer()是指英文的,號當作MultiAutoCompleteTextView的分隔符號,下面是程式碼範例與結果圖:



xml檔:
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="你最喜歡的程式語言是什麼?" /> <MultiAutoCompleteTextView android:id="@+id/multiAutoCompleteTextView" android:layout_width="match_parent" android:layout_height="wrap_content" />

程式碼: import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.*; public class MainActivity extends Activity { final String[] language = {"C","C++","C#","Java","VB","JSP","Android","ASP.NET","PHP","Python"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,language); MultiAutoCompleteTextView multiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById (R.id.multiAutoCompleteTextView); multiAutoCompleteTextView.setThreshold(1); multiAutoCompleteTextView.setAdapter(adapter); multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); } }

除了上面介紹了這些輸入的類別之外Android還提供下拉式選單spinner,寫法跟前面所介紹的差不多,非常的簡單使用。

xml檔: <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="你最喜歡的程式語言是什麼?" /> <Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />

主程式:
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.*; public class MainActivity extends Activity { final String[] language = {"C","C++","C#","Java","VB","JSP","Android","ASP.NET","PHP","Python"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,language); Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setAdapter(adapter); } }

沒有留言:

張貼留言