第一种方法:在相对布局中加入一个webview控件,放入文字,长按文字后就能实现功能。
第二种方法:在线性布局中加入一个线性布局作为父控件,一个edittext作为文本显示的控件。为文本控件设置长按监听,监听到长按事件后,在父控件里加入一个button控件。再为此button控件设置监听单击事件。用intent调用浏览器,intent的action设置为ACTION_WEB_SEARCH,intent.putExtra(SearchManager.QUERY, selectText);searchmanager是android提供的搜索服务,对基于网络的数据进行 query search。
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
<EditText
android:id="@+id/poemTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:lines="10"
android:text="@string/content"
android:textSize="20sp" />
</LinearLayout>
MainActivity.java
package com.example.intentdemo;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
public class MainActivity extends Activity {
private EditText poemTxt;
WebView wv;
private LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
poemTxt = (EditText) this.findViewById(R.id.poemTxt);
linearLayout = (LinearLayout) this.findViewById(R.id.linearLayout);
// 设置长按点击事件
poemTxt.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
linearLayout.removeAllViews();
Button searchBtn = new Button(MainActivity.this);
searchBtn.setText("搜索");
searchBtn.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
linearLayout.addView(searchBtn);
// 为弹出的搜索按钮设置点击事件
searchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 选中文本开始位置
int startSelect = poemTxt.getSelectionStart();
// 选中文本结束位置
int endSelect = poemTxt.getSelectionEnd();
// 选中的文本
String selectText = poemTxt.getText()
.subSequence(startSelect, endSelect).toString();
// 指定intent的action是ACTION_WEB_SEARCH就能调用浏览器
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
// 指定搜索关键字是选中的文本
intent.putExtra(SearchManager.QUERY, selectText);
linearLayout.removeAllViews();
startActivity(intent);
}
});
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}