代码如下:
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();
如图:


本文介绍了一个用于Android应用中的自定义搜索对话框组件。该组件可通过不同的搜索条件(如关键字、作者或包名)进行搜索,并支持高级搜索功能。文章提供了完整的Java代码示例及布局文件。
1094

被折叠的 条评论
为什么被折叠?



