how to search text in webview

前端 未结 3 1203
抹茶落季
抹茶落季 2020-12-28 22:27

I am working in android... I am a newbie in this field... I developed a webview...i need to search for a particular text inside the webview... I searched about some question

3条回答
  •  太阳男子
    2020-12-28 22:54

    Please try this snippet

     package com.search.demo;  
    
    
     import java.lang.reflect.Method;  
    
     import android.app.Activity;  
     import android.os.Bundle;  
     import android.view.KeyEvent;  
     import android.view.Menu;  
     import android.view.MenuItem;  
     import android.view.View;  
     import android.view.View.OnClickListener;  
     import android.view.View.OnKeyListener;  
     import android.webkit.WebView;  
     import android.widget.Button;  
     import android.widget.EditText;  
     import android.widget.LinearLayout;  
    
     public class SearchDemoActivity extends Activity {  
          WebView mWebView;  
          private LinearLayout container;  
          private Button nextButton, closeButton;  
         private EditText findBox;  
    
        /** Called when the activity is first created. */  
    
       @Override  
       public void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
           setContentView(R.layout.main);  
           mWebView = (WebView)findViewById(R.id.webview);  
           mWebView.loadUrl("http://devemat-androidprogramming.blogspot.com/");  
       }  
    
       private static final int SEARCH_MENU_ID = Menu.FIRST;  
    
       @Override  
       public boolean onCreateOptionsMenu(Menu menu){  
           super.onCreateOptionsMenu(menu);  
    
           menu.add(0, SEARCH_MENU_ID, 0, "Search");  
           return true;  
       }  
    
       public boolean onPrepareOptionsMenu(Menu menu){  
           super.onPrepareOptionsMenu(menu);  
           return true;  
       }  
    
       public boolean onOptionsItemSelected(MenuItem item){  
           switch(item.getItemId()){  
               case SEARCH_MENU_ID:  
                   search();  
               return true;  
           }  
           return true;  
       }  
    
       public void search() {
        container = (LinearLayout) findViewById(R.id.layoutId);
    
        nextButton = new Button(this);
        nextButton.setText("Next");
        nextButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mWebView.findNext(true);
            }
        });
    
        container.addView(nextButton);
    
        closeButton = new Button(this);
        closeButton.setText("Close");
        closeButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                container.removeAllViews();
    
            }
        });
        container.addView(closeButton);
    
        findBox = new EditText(this);
        findBox.setMinEms(30);
        findBox.setSingleLine(true);
        findBox.setHint("Search");
    
        findBox.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if ((event.getAction() == KeyEvent.ACTION_DOWN) && ((keyCode == KeyEvent.KEYCODE_ENTER))) {
                    mWebView.findAll(findBox.getText().toString());
    
                    try {
                        Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
                        m.invoke(mWebView, true);
                    } catch (Exception ignored) {
                    }
                }
                return false;
            }
        });
    
        container.addView(findBox);
        }
    }  
    

提交回复
热议问题