Android webview'da çalışmak için yakınlaştırmak için yakınlaştırma tuşlarını kullanarak zoom kontrolleri yapmaya çalışıyorum. Büyük ölçüde this SO referans. Şu anda bu onCreate yönteminde kuruluyor varAndroid Webview uygulamasında Yakınlaştırma ve Sıkıştırma Kontrollerini Etkinleştir
:
this._webView.getSettings().setBuiltInZoomControls(true);
this._webView.getSettings().setDisplayZoomControls(true);
this._webView.getSettings().setSupportZoom(true);
Ama hiçbir şey göründüğü ve Yakınlaştırma denetimleri görünmüyor. Ayrıca setSupportZoom
denedim ama bu yardımcı olmadı.
Bildiğim kadarıyla benim webview bir kaydırma görünümünde sarılmış değil ama Web görünümü bir alt sınıfıdır söyleyebilirim:
class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
}
@Override
public void goBack() {
super.goBack();
}
}
Yani ben böyle yaratma sonunda:
if (this._webView == null) {
this._webView = new MyWebView(this);
this._webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
this._webView.getSettings().setJavaScriptEnabled(true);
this._webView.setWebChromeClient(new WebChromeClient());
this._webView.setWebViewClient(new WebViewClient());
this._webView.getSettings().setBuiltInZoomControls(true);
this._webView.getSettings().setDisplayZoomControls(true);
this._webView.getSettings().setSupportZoom(true);
this._webView.loadUrl(this._baseUrl);
}
Yanlış olduğum herhangi bir fikir var mı?
Teşekkürler!
DÜZENLEME: generateLayout yılında
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(1);
getWindow().setFlags(1024, 1024);
RelativeLayout my_layout = generateLayout();
initUI();
setContentView(my_layout);
}
biz ilk düzen oluşturmak ve Web görünümü için tutucu oluşturun::
private RelativeLayout generateLayout() {
RelativeLayout my_layout = new RelativeLayout(this);
my_layout.setId(this.generateViewId());
my_layout.setLayoutParams(new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT));
... more layout stuff
FrameLayout webViewPlaceholder = new FrameLayout(this);
this._webViewPlaceholder = webViewPlaceholder;
webViewPlaceholder.setId(this.generateViewId());
webViewPlaceholder.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
RelativeLayout.LayoutParams webViewPlaceholderLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
webViewPlaceholderLayoutParams.addRule(RelativeLayout.BELOW, rlHeader.getId());
webViewPlaceholder.setLayoutParams(webViewPlaceholderLayoutParams);
my_layout.addView(webViewPlaceholder);
}
Sonra initUI
yılında yarattığımız onCreate
yılında
Bunu webViewSunucu:
@SuppressLint({"SetJavaScriptEnabled"})
protected void initUI() {
if (this._webView == null) {
this._webView = new MyWebView(this);
this._webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
this._webView.getSettings().setJavaScriptEnabled(true);
this._webView.setWebChromeClient(new WebChromeClient());
this._webView.setWebViewClient(new WebViewClient());
this._webView.getSettings().setSupportZoom(true);
this._webView.getSettings().setBuiltInZoomControls(true);
this._webView.getSettings().setDisplayZoomControls(true);
this._webView.loadUrl(this._baseUrl);
} else {
if (this._webView.getProgress() >= 100) {
this._progressIndicatorView.setVisibility(View.INVISIBLE);
}
setNavigationButtonsState();
}
this._webViewPlaceholder.addView(this._webView);
}
Web görünümüne referans almıyorsunuzdur. Web görünümünü dinamik olarak oluşturulmayan bir düzen görünümü olarak kullanmaya çalışın –
"this._webView" öğesini düzeninize ekler misiniz? RootView, web görünümünü düzenine eklemelidir. – cole
"RelativeLayout" ana menüsüne bir 'FrameLayout' ekledim ve 'this._webView' öğesini buna ekledim. Ana düzen programlı olarak oluşturulur. Kodu görmek istiyor musun? –