第一種方法:在相對佈局中加入一個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;
}
}