代码如下:
SearchDialog.java
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
public class SearchDialog extends Dialog {
private ImageButton key_button,author_button,package_button;
private EditText keyword_Text,author_Text,package_Text;
private Button advanced_button,sumbit_button;
private boolean isExpand = true;
private Context context;
private Intent intent;
public SearchDialog(Context context){
super(context);
this.context = context;
}
public SearchDialog(Context context, int theme) {
super(context, theme);
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_dialog);
//搜关键字按钮
key_button = (ImageButton)findViewById(R.id.key_button);
//搜作者按钮
author_button = (ImageButton)findViewById(R.id.author_button);
//搜包名按钮
package_button = (ImageButton)findViewById(R.id.package_button);
//高级按钮
advanced_button = (Button)findViewById(R.id.advanced_button);
//设置监听
key_button.setOnClickListener(myOnClickListener);
author_button.setOnClickListener(myOnClickListener);
package_button.setOnClickListener(myOnClickListener);
advanced_button.setOnClickListener(myOnClickListener);
//关键字输入框
keyword_Text = (EditText)findViewById(R.id.key_edit);
//作者输入框
author_Text = (EditText)findViewById(R.id.author_edit);
//包名输入框
package_Text = (EditText)findViewById(R.id.package_edit);
//提交按钮
sumbit_button = (Button)findViewById(R.id.sumbit_button);
sumbit_button.setOnClickListener(myOnClickListener);
showOthers();
}
private void showOthers(){
if(isExpand){
//默认隐藏其它搜索框和提交按钮
author_button.setClickable(false);
package_button.setClickable(false);
author_Text.setEnabled(false);
package_Text.setEnabled(false);
}else{
//显示其它选项
author_button.setClickable(true);
package_button.setClickable(true);
author_Text.setEnabled(true);
package_Text.setEnabled(true);
}
}
private View.OnClickListener myOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
try {
intent = new Intent("android.intent.action.VIEW");
switch(v.getId()){
case R.id.key_button:
String words = keyword_Text.getText().toString().trim();
if(words.length()>0){
intent.setData(Uri.parse("market://search?q="+words));
dismiss();
context.startActivity(intent);
}else{
dismiss();
showNotice(R.string.nowords);
}
break;
case R.id.author_button:
words = author_Text.getText().toString().trim();
if(words.length()>0){
intent.setData(Uri.parse("market://search?q=pub:"+words));
dismiss();
context.startActivity(intent);
}else{
dismiss();
showNotice(R.string.nowords);
}
break;
case R.id.package_button:
words = package_Text.getText().toString().trim();
if(words.length()>0){
intent.setData(Uri.parse("market://search?q=pname:"+words));
dismiss();
context.startActivity(intent);
}else{
dismiss();
showNotice(R.string.nowords);
}
break;
case R.id.advanced_button:
isExpand = isExpand == true?false:true;
showOthers();
break;
case R.id.sumbit_button:
Intent submitIntent = new Intent("android.intent.action.VIEW");
String keywords = keyword_Text.getText().toString().trim();
String author = author_Text.getText().toString().trim();
String pack = package_Text.getText().toString().trim();
String url = "market://search?";
if(keywords.length()>0||author.length()>0||pack.length()>0){
if(keywords.length()>0){
url+="q="+keywords;
if(author.length()>0){
url+=" pub:"+author;
}
if(pack.length()>0){
url+=" pname:"+pack;
}
}else if(author.length()>0){
url += "q=pub:"+author;
if(pack.length()>0){
url+=" pname:"+pack;
}
}else if(pack.length()>0){
url+="q=pname:"+pack;
}
submitIntent.setData(Uri.parse(url));
context.startActivity(submitIntent);
dismiss();
}else{
dismiss();
showNotice(R.string.nowords);
}
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
private void showNotice(int id){
Toast.makeText(context, context.getResources().getText(id), Toast.LENGTH_LONG).show();
}
}
Layout:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- 关键字 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:minWidth="280dip"> <ImageButton android:id="@+id/key_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search_search" /> <EditText android:id="@+id/key_edit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/search_keyword"/> </LinearLayout> <!-- 作者 --> <LinearLayout android:id="@+id/author_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageButton android:id="@+id/author_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search_author"/> <EditText android:id="@+id/author_edit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/search_author"/> </LinearLayout> <!-- 包名 --> <LinearLayout android:id="@+id/package_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageButton android:id="@+id/package_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search_package"/> <EditText android:id="@+id/package_edit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/search_package"/> </LinearLayout> <!-- 高级 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/advanced_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/search_advanced"/> <Button android:id="@+id/sumbit_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="OK"/> </LinearLayout> </LinearLayout> </ScrollView>
调用代码:
SearchDialog dialog = new SearchDialog(this);
dialog.setTitle(R.string.market_search);
dialog.show();
如图: