21、Android之Spinner

Spinner

在本节中将为 Spinner  View 创建一个活动。Spinner  View 和其它编程语言里的
ComboBox 相类似。创建这个活动的步骤和前面部分的一样。因此,还是会提供
给你三个主要活动的代码文件—AndroidManifest.xml,  spinner.xml,
和  testSpinner.java。下面就是这些提供的文件。
AndroidManifest.xml
本节包含当前 AndroidViews 的 AndroidManifest.xml 文件的完整代码。如果你
使用 Eclipse,修改活动的 AndroidManifest.xml 文件使它和下面一样:
}
public  void  showRadioGroup(){
Intent  radiogroup  =  new  Intent(this,  testRadioGroup.class);
startActivity(radiogroup);
}
public  void  showSpinner(){
}
}
<?xml  version="1.0"  encoding="utf-8"?>
<manifest  xmlns:android=http://schemas.android.com/apk/res/android
package="android_programmers_guide.AndroidViews">
<application  android:icon="@drawable/icon">
<activity  android:name=".AndroidViews"
android:label="@string/app_name">
<intent-filter>
<action  android:name="android.intent.action.MAIN"  />
<category  android:name="android.intent.category.LAUNCHER"  />
</intent-filter>
</activity>
<activity android:name=".AutoComplete"
android:label="AutoComplete">
<intent-filter>
<action  android:name="android.intent.action.MAIN"  />
<category  android:name="android.intent.category.LAUNCHER"/>
</intent-filter>108
spinner.xml
本节展示了 spinner.xml 文件的完整代码。在项目中创建一个名为 spinner.xml
的文件。使用下面的代码修改你的文件。
</activity>
<activity  android:name=".testButton"  android:label="TestButton">
<intent-filter>
<action  android:name="android.intent.action.MAIN"  />
<category  android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".testCheckBox"
android:label="TestCheckBox">
<intent-filter>
<action  android:name="android.intent.action.MAIN"  />
<category  android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".testEditText"
android:label="TestEditText">
<intent-filter>
<action  android:name="android.intent.action.MAIN"  />
<category  android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity  android:name=".testRadioGroup"  android:label="Test
RadioGroup">
<intent-filter>
<action  android:name="android.intent.action.MAIN"  />
<category  android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity  android:name=".testSpinner"  android:label="Test  Spinner">
<intent-filter>
<action  android:name="android.intent.action.MAIN"  />
<category  android:name="android.intent.category.LAUNCHER"  />
</intent-filter>
</activity>
</application>
</manifest>
<?xml  version="1.0"  encoding="utf-8"?>
<LinearLayout
xmlns:android=http://schemas.android.com/apk/res/android109
testSpinner.java
本节包含了执行 Spinner 活动所需要的最后一个文件。在项目中创建一个名为
testSpinner.java 的新文件。这是个活动的主要文件并且包含可执行代码。在
testSpinner.java 文件中使用下面的代码来完成这个活动。
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Spinner  android:id="@+id/testSpinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button  android:id="@+id/enableButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Set  isEnabled"/>
<Button  android:id="@+id/backgroundColorButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Change  Background  Color"/>
</LinearLayout>
package  android_programmers_guide.AndroidViews;
import  android.app.Activity;
import  android.os.Bundle;
import  android.view.View;
import  android.widget.ArrayAdapter;
import  android.widget.Spinner;
import  android.widget.Button;
import  android.graphics.Color;
198  Android:  A  Programmer’s  Guide
public  class  testSpinner  extends  Activity  {
@Override
public  void  onCreate(Bundle  icicle)  {
super.onCreate(icicle);
setContentView(R.layout.spinner);
final  Spinner  spinner  =  (Spinner)  findViewById(R.id.testSpinner);
ArrayAdapter<String>  adapter  =  new  ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item,  Months);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropd
own_item);
spinner.setAdapter(adapter);110
AndroidViews.java
创建活动的最后一个步骤就是编辑 AndroidViews.java。如果你要从主活动
AndroidViews 中呼叫 testSpinner 活动,你必须增加代码到 AndroidViews.java
中。用当前的 AndroidViews.java 和下面的代码作个比较。增加代码来完成文件 。
final  Button  changeButton  =  (Button)findViewById(R.id.enableButton);
changeButton.setOnClickListener(new  Button.OnClickListener()  {
public  void  onClick(View  v){
changeOption(spinner);  }
});
final  Button  changeButton2  =  (Button)
findViewById(R.id.backgroundColorButton);
changeButton2.setOnClickListener(new  Button.OnClickListener()  {
public  void  onClick(View  v){
changeOption2(spinner);
}
});
}
static  final  String[]  Months  =  new  String[]{
"January","February","March","April","May","June","July","August",
"September","October","November","December"
};
public  void  changeOption(Spinner  spinner){
if  (spinner.isEnabled()){
spinner.setEnabled(false);
}
else{
spinner.setEnabled(true);
}
}
public  void  changeOption2(Spinner  spinner){
spinner.setBackgroundColor(Color.RED);
}
}
package  android_programmers_guide.AndroidViews;
import  android.app.Activity;
import  android.os.Bundle;
import  android.view.Menu;
import  android.content.Intent;
public  class  AndroidViews  extends  Activity  {
/**  Called  when  the  Activity  is  first  created.  */
@Override
public  void  onCreate(Bundle  icicle)  {111
super.onCreate(icicle);
setContentView(R.layout.main);
}
@Override
public  boolean  onCreateOptionsMenu(Menu  menu)  {
super.onCreateOptionsMenu(menu);
menu.add(0,  0,  "AutoComplete");
menu.add(0,  1,  "Button");
menu.add(0,  2,  "CheckBox");
menu.add(0,  3,  "EditText");
menu.add(0,  4,  "RadioGroup");
menu.add(0,  5,  "Spinner");
return  true;
}
@Override
public  boolean  onOptionsItemSelected(Menu.Item  item){
switch  (item.getId())  {
case  0:
showAutoComplete();
return  true;
case  1:
showButton();
return  true;
case  2:
showCheckBox();
return  true;
case  3:
showEditText();
return  true;
case  4:
showRadioGroup();
return  true;
case  5:
showSpinner();
return  true;
}
return  true;
}
public  void  showButton()  {
Intent  showButton  =  new  Intent(this,  testButton.class);
startActivity(showButton);
}
public  void  showAutoComplete(){
Intent  autocomplete  =  new  Intent(this,  AutoComplete.class);启动应用程序并从菜单中选择 Spinner 选项。试着点击 Set  isEnabled 和 Change
Backgroud  Color 按钮。
试试这个:修改更多的 View 属性
试试这个:修改更多的 View   View   View   View 属性  第八章(10)    (10)    (10)    (10)
为活动修改按钮动作在每个 View 中来改变不同的属性:
●  使用 Eclipse 的特性列表来查看每个 View 有哪些属性。
●  在任一个给定的活动中编辑两个按钮的功能来更改按钮和 View 的交互活动。
在下一章中,将用到谷歌的 API(Google  API)。将创建一个应用程序和 GTalk
交互。这将会给你更多的知识关于如何构造独特的应用程序。
问专家
Q:如果我在应用程序中使用多个 Views,我可以使用 android.widget.*输入整
个 widget 包装吗?
A:是的。但是,我会保守的使用呼叫。当你输入整个包装,你增加了包装的所
有代码到活动中。这个管理的不好会让活动速度变慢。我会只输入我需要的包装 ,
试图减少活动中的代码。

你可能感兴趣的:(21、Android之Spinner)