как показать веб-просмотр внутри активности в середине экрана


У меня возникла проблема при отображении WebView в действии в середине экрана. У меня есть активность, и я хочу показать веб-просмотр в центре экрана. Моя активность прозрачна, поэтому фоновая активность будет видна. Всякий раз, когда я пытаюсь создать веб-просмотр и добавить его в действие с помощью setContentView (веб-просмотр), он всегда показывает представление в верхнем левом углу экрана. Это способ обойти это? Я пытаюсь сделать это только с помощью чистого кода. Вот мой код.

protected void onCreate(Bundle savedInstance) {
    //some initialization stuff
    LinearLayout ll = new LinearLayout(activity); 
    ll.setOrientation(LinearLayout.VERTICAL);
    ll.setGravity(Gravity.CENTER_HORIZONTAL);
    ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 
                        ViewGroup.LayoutParams.FILL_PARENT));
    ll.setBackgroundColor(android.R.color.transparent);
    ll.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); //added after suggestion
    webView = new WebView(this);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.loadUrl("http://www.google.com");
    ll.addView(webView);
    webView.setBackgroundColor(android.R.color.transparent);
    setContentView(ll);
}
.


person bhups    schedule 30.07.2010    source источник


Ответы (1)


setContentView(webview) невозможно, вы уверены, что передаете здесь webView как параметр? Это должен быть идентификатор ресурса макета. Или вы имеете в виду addView?

Вы должны поместить WebView в ресурс макета и добавить атрибуты layout_gravity, чтобы

layout_gravity="center_horizontal|center_vertical"

и/или окружающий linearLayout или все, что вы используете для:

gravity="center_horizontal|center_vertical"

Пожалуйста, предоставьте свой код для получения дополнительных разъяснений.

person Mathias Conradt    schedule 30.07.2010
comment
Я обновил вопрос с кодом. Гравитация работает нормально, webView центрируется с ней. Есть ли способ ограничить его размер, то есть до 300x200, независимо от размера загружаемой страницы, а остальная часть содержимого должна быть обрезана или могут отображаться горизонтальные/вертикальные полосы прокрутки. Спасибо! - person bhups; 30.07.2010
comment
да, вы можете сделать это через setLayoutParams либо для окружающего LinearLayout, либо для самого WebView; вместо использования ViewGroup.LayoutParams.FILL_PARENT: LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(300, 200); ll.setLayoutParams(параметры); - person Mathias Conradt; 30.07.2010