第八章 列表、菜单以及其它视图——中

本文详细介绍了如何在Android应用中实现AutoCompleteTextView组件,包括创建布局文件、编写Java代码及设置Intent过滤器等步骤。

这段代码有个问题:onOptionsItemSelected()是一个当任何菜单项被选择时都会调用的普通方法。你需要给onOptionsItemSelected()一种区别菜单项并执行相应代码的方法。因此,使用switch/case声明,来帮助方法选择不同的菜单项。当你创建菜单项时,你指定了从05的一些列数字作为菜单项的值。你可以在case声明中调用getId()来区别哪个菜单项背选中了。

switch (item.getId()) {

case 0:

return true;

case 1:

return true;

case 2:

return true;

case 3:

return true;

case 4:

return true;

case 5:

return true;

}

return true;

在这个声明中,每个id的动作都返回true。这除了打开你需要添加代码的区域外,啥也没干。你的AndroidViews.java文件现在已经适合创建爱你新菜单系统能启动的Activity了。AndroidViews.java的全部代码应该看起来像这样:

package android_programmers_guide.AndroidViews;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

public class AndroidViews extends Activity {

/** Called when the Activity is first created. /

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

/** Add one menu item for each View in our project */

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 onOptionsItemSelected to execute code for each

menu item */

@Override

public boolean onOptionsItemSelected(Menu.Item item){

/** Select statement to handle calls

to specific menu items */

switch (item.getId()) {

case 0:

return true;

case 1:

return true;

case 2:

return true;

case 3:

return true;

case 4:

return true;

case 5:

return true;

}

return true;

}

}

完成AndroidViews.java后,你可以重点创建你的其它Activity。下面的章节中,你会在项目中为每个视图创建一个Activity,并在case声明中添加代码来启动这些视图的Activity

创建自动完成的Activity

本节,你会创建一个Activity来展示AutoCompleteTextViewAutoCompleteTextView会成为你开发的强大工具。这个视图对充分利用Android有限的主屏空间非常有用。

AutoCompleteTextView,顾名思义,是一个修改过的TextView,当输入一个单词或词组时它会提示一些可能的值。这种视图在移动应用中非常有用,特别当你不想为ListView预留空间,或者将加快向应用中输入文本的进程。

要创建AutoCompleteTextView,你需要添加一个新的.xml布局文件,添加一个.java文代码件,和一个处理通话的Intent 过滤器。

 

创建一个autocomplete.xml文件

AndroidView项目中创建一个名为autocomplete.xml.xml文件。注意文件名必须全部小写。文件会出现在Package Explorer中的layout文件夹。双击文件进行编辑。

这个文件用来控制AutoCompleteTextView Activity的图层,所以你的图层中需要有一个AutoCompleteTextView。添加AutoCompleteTextViewXMl看起来像:

<AutoCompleteTextView android:id="@+id/testAutoComplete"

android:layout_width="fill_parent"

 android:layout_height="wrap_content"/>

你已经在.xml文件中创建了一些视图,所以你应该熟悉这种格式,AutoCompleteTextView也没啥不同。将id设置为testAutoComplete,将宽与高分别设置为fill_parentwrap_content

你也应该为两个按钮添加图层。这些按钮用来控制你改变的属性。将属性命名为autoCompleteTextViewtextColorButton,如下:

<Button android:id="@+id/autoCompleteButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Change Layout"/>

 

<Button android:id="@+id/textColorButton"

android:layout_width="fill_parent

android:layout_height="wrap_content"

android:text="Change Text Color"/>

当添加三个视图layout后,最终的autocomplete.xml文件应该看起来像这样:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

<AutoCompleteTextView android:id="@+id/testAutoComplete"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

<Button android:id="@+id/autoCompleteButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Change Layout"/>

<Button android:id="@+id/textColorButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Change Text Color"/>

</LinearLayout>

 

创建一个autocomplete.java文件

参照前面的“创建一个新的.java文件”章节的提示,来创建你的autocomplete.java文件。

你要做的第一件事,就是味你的视图导入包。在这个Activity中,你要用到两个视图,AutoCompleteTextViewButton。你需要用到ColorsigeArrayAdapter。因此在你的Activity中导入如下的包:

package android_programmers_guide.AndroidViews;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.Button;

import android.graphics.Color;

autocomplete.javaAutoComplete类添加初始化结构。

public class AutoComplete extends Activity {

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

}

}

这个类给为你创建Activity的其余部分打下了基础。这个Activity中的所有功能都会给予这个类构建。你要做的第一件事就是从autocomplete.xml中加载图层。

setContentView(R.layout.autocomplete);

该例中,你会创建AutoCompleteTextView,它包含一个月份列表。当用户在框中输入时,它会匹配你要输入的月份。由于AutoCompleteTextView包含了一个月份列表,你需要创建一个能与AutoCompleteTextView相关的列表。创建一个字符串数组,并为它分配月份值:

static final String[] Months = new String[]{

"January","February","March","April","May","June","July","August",

"September","October","Nove mber","December"

};

下个任务就是将字符串数组赋给AutoCompleteTextView。你已经创建了不止一个视图,所以创建AutoCompleteTextView的代码应该非常熟悉。你之前所没见到过的是为视图分配字符串数组的代码:

ArrayAdapter<String> monthArray = new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1, Months);

final AutoCompleteTextView textView = (AutoCompleteTextView)

findViewById(R.id.testAutoComplete);

textView.setAdapter(monthArray);

第一行中,你调用了你创建的字符串数组,并将它赋给名为monthArrayArrayAdapter

下面的一段代码实例化了两个按钮。这根前面章节中用到的代码相同。唯一的区别是你调用了两个尚未被创建的方法:changeOptionchangeOption2

final Button changeButton = (Button) findViewById(R.id.autoCompleteButton);

changeButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption(textView);

}

});

final Button changeButton2 = (Button)

findViewById(R.id.textColorButton);

changeButton2.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption2(textView);

}

});

被这些按钮调用的方法用来改变AutoCompleteTextView上的布局属性。我所选择改变的那两个属性是布局的高和文本的颜色。你会安装这些按钮的某个,将AutoCompleteTextView的布局高度反复改为30100。另一个按钮用来将视图中文本的颜色改变为红色。

ChangeOption()功能会改变AutoCompleteTextView的布局高度。这个功能的代码非常简单:

public void changeOption(AutoCompleteTextView text){

if (text.getHeight()==100){

text.setHeight(30);

}

else{

text.setHeight(100);

}

}

这个功能中你所做的就是检测AutoCompleteTextView的当前高度。如果高度为100,则将其设置为30,否则设置为100

ChangeOption2()的功能同样简单:

public void changeOption2(AutoCompleteTextView text){

text.setTextColor(Color.RED);

}

这个功能仅仅将AutoCompleteTextView的文本颜色设置为Color.REDColor.RED的值从android.graphics.Color包中导入。你可以浏览这个包,改颜色改变为任何值;我选择RED所以它会醒目一些。

你完整的autocomplete.java文件应该看起来像这样:

package android_programmers_guide.AndroidViews;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.Button;

import android.graphics.Color;

public class AutoComplete extends Activity {

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.autocomplete);

ArrayAdapter<String> monthArray = new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1, Months);

final AutoCompleteTextView textView = (AutoCompleteTextView)

findViewById(R.id.testAutoComplete);

textView.setAdapter(monthArray);

final Button changeButton = (Button)

findViewById(R.id.autoCompleteButton);

changeButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption(textView);

}

});

final Button changeButton2 = (Button)

findViewById(R.id.textColorButton);

changeButton2.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption2(textView);

}

});

}

static final String[] Months = new String[]{

"January","February","March","April","May","June","July","August",

"September","October","November","December"

};

public void changeOption(AutoCompleteTextView text){

if (text.getHeight()==100){

text.setHeight(30);

}

else{

text.setHeight(100);

}

}

public void changeOption2(AutoCompleteTextView text){

text.setTextColor(Color.RED);

}

}

 

创建一个Intent过滤器

在你运行这个应用之前你要做的最后一件事就是在AndroidManifes.xml中建立Intent过滤器。然后你就可以从前面图8-1所示的Menu中调用Intent了。Intent过滤器的代码如下所示:

<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>

</activity>

欢迎使用“可调增益放大器 Multisim”设计资源包!本资源专为电子爱好者、学生以及工程师设计,旨在展示如何在著名的电路仿真软件Multisim环境下,实现一个具有创新性的数字控制增益放大器项目。 项目概述 在这个项目中,我们通过巧妙结合模拟电路与数字逻辑,设计出一款独特且实用的放大器。该放大器的特点在于其增益可以被精确调控,并非固定不变。用户可以通过控制键,轻松地改变放大器的增益状态,使其在1到8倍之间平滑切换。每一步增益的变化都直观地通过LED数码管显示出来,为观察和调试提供了极大的便利。 技术特点 数字控制: 使用数字输入来调整模拟放大器的增益,展示了数字信号对模拟电路控制的应用。 动态增益调整: 放大器支持8级增益调节(1x至8x),满足不同应用场景的需求。 可视化的增益指示: 利用LED数码管实时显示当前的放大倍数,增强项目的交互性和实用性。 Multisim仿真环境: 所有设计均在Multisim中完成,确保了设计的仿真准确性和学习的便捷性。 使用指南 软件准备: 确保您的计算机上已安装最新版本的Multisim软件。 打开项目: 导入提供的Multisim项目文件,开始查看或修改设计。 仿真体验: 在仿真模式下测试放大器的功能,观察增益变化及LED显示是否符合预期。 实验与调整: 根据需要调整电路参数以优化性能。 实物搭建 (选做): 参考设计图,在真实硬件上复现实验。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值