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:是的。但是,我会保守的使用呼叫。当你输入整个包装,你增加了包装的所
有代码到活动中。这个管理的不好会让活动速度变慢。我会只输入我需要的包装 ,
试图减少活动中的代码。