2014-12-10 3 views
1

На моем веб-сайте мне нужно вставить зум, но без элементов управления +/-. Так что моя цель состоит в том, чтобы скрыть эти элементы навигации (+/- кнопки)элементы управления сайтом Android

Мой код:

package pack.ivoclar; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 


public class AppActivity extends Activity { 

    String url = null; 


    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 

     Intent intent; 
     intent = getIntent(); 
     url = intent.getStringExtra("url"); 

     loadPage(); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 

     switch(item.getItemId()) 
     { 
      case R.id.exit: 
      { 
       finish(); 
       return true; 
      } 
      default: 
       return super.onOptionsItemSelected(item); 

     } 


    } 

    private void loadPage() 
    { 

     setContentView(R.layout.main); 

     WebView myWebView; 
     myWebView = (WebView) findViewById(R.id.webview); 
     myWebView.getSettings().setJavaScriptEnabled(true); 
     myWebView.setWebChromeClient(new WebChromeClient()); 
     myWebView.getSettings().setBuiltInZoomControls(false); 
     myWebView.getSettings().setSupportZoom(false); 

     myWebView.loadUrl(url); 


     myWebView.setWebViewClient 
     (new WebViewClient(){ 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url){ 
       view.loadUrl(url); 

       return false; 

      } 

      @Override 
      public void onReceivedError (WebView view, int errorCode, String description, String failingUrl) 
      { 

       Intent Error; 
       Error = new Intent(getBaseContext(), ErrorActivity.class); 
       Error.putExtra("url", failingUrl); 
       startActivity(Error); 
       finish(); 

      } 

     }); 


    } 

} 

Мой андроида уровень API 10 для работы с андроид +2.3.3. Можете ли вы помочь мне?

+0

Ваш вопрос непонятен –

+0

Отредактированный вопрос –

+0

try' myWebView.getSettings(). SetDisplayZoomControls (false); ' –

ответ

0

Вы должны использовать setDisplayZoomControls, чтобы позволить пользователю по-прежнему использовать щепотку для увеличения, но элементы управления не будут отображаться.

myWebView.getSettings().setDisplayZoomControls(false); 

Чтобы применить его в API 10,

вы можете refer this

+0

эта функция соответствует уровню api +11 и мне нужно api level 10 –

0

вам необходимо создать собственный пользовательский WebView и сделать один хак для предварительных сот, как показано ниже:

public class WebViewNoZoomControllers extends WebView { 

private ZoomButtonsController zoomControl = null; 

public WebViewNoZoomControllers(Context context) { 
    super(context); 
    prepare(); 
} 

public WebViewNoZoomControllers(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    prepare(); 
} 

public WebViewNoZoomControllers(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    prepare(); 
} 

@SuppressWarnings("deprecation") 
@SuppressLint("NewApi") 
private void prepare(){ 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { 
     this.getSettings().setBuiltInZoomControls(true); 
     this.getSettings().setDisplayZoomControls(false); //API11 and above only 
    } else 
     assignControllers(); 
} 

private void assignControllers() { 
    try { 
     Class webview = Class.forName("android.webkit.WebView"); 
     Method method = webview.getMethod("getZoomButtonsController"); 
     zoomControl = (ZoomButtonsController) method.invoke(this, null); 
    } catch (Exception e) {} 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (zoomControl != null && zoomControl.isVisible()) 
     zoomControl.setVisible(false); 
    return super.onTouchEvent(event); 
} 

} 
+0

dont work, генерирует ошибку в setDisplayZoomControls в функции подготовки ty –

+0

какая ошибка? не говорите ошибки lint ... вы добавили '@SuppressWarnings (" deprecation ")' и '@SuppressLint (" NewApi ")'? (Я добавил их в исходный код выше) – snachmsm

+0

ошибка в setDisplayZoomControls и в HONEYCOMB. ty –

Смежные вопросы