Android WebView仅在半屏上显示

时间:2012-12-02 15:26:31

标签: java android android-layout android-webview

我的网页视图显示效果没有任何问题。但是,在我应用“选定文本”功能后,Web视图仅显示在屏幕的一半上(参见下图)。

enter image description here

这是我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.content);

    Intent i = this.getIntent();

    final int wordId = i.getIntExtra("id", -1);
    mCurrentWord = i.getStringExtra("word");
    mSelectedDB = i.getStringExtra("db");
    mContentStyle = i.getStringExtra("style");

    prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

    loadHistoryFromPreferences();
    loadFavouriteFromPreferences();

    wvContent = (WebView) findViewById(R.id.wvContent);
    initWebview();
    String content = getContentById(wordId);
    showContent(content);

    //This is the beginning of what I added
    webkit=new Webkit(this);
    wvContent.addView(webkit);
    WebkitSelectedText webkitSelectedText=new WebkitSelectedText(getApplicationContext(), webkit);
    webkitSelectedText.init();

    wvContent.setOnClickListener(new View.OnClickListener() {           
        @Override
        public void onClick(View v) {
            finish();
        }
    });
    //This is the end of what I added

我不知道我做错了什么。除了这个显示问题,包括新添加的Selected text在内的所有其他功能都可以正常工作。

我希望你们能够意识到这个问题并帮我解决一下。非常感谢你。

EDITED

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="bottom|fill_vertical"
>
    <LinearLayout xmlns:android=
    "http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical"
    android:layout_weight="1"
    >       
    <WebView  
        android:id="@+id/wvContent"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_gravity="top" 
        android:layout_weight="1"  
    />

</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
>
    <ImageButton
        android:id="@+id/btnHome"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/home"
        android:layout_weight="0.25"
    />
    <ImageButton
        android:id="@+id/btnPronounce"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/pronounce"
        android:layout_weight="0.25" 
    />      
    <ImageButton
        android:id="@+id/btnShowHistory"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/history"
        android:layout_weight="0.25"
    /> 
    <ImageButton
        android:id="@+id/btnAddFavourite"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/add_favourite"
        android:layout_weight="0.25" 
    />
</LinearLayout>   

3 个答案:

答案 0 :(得分:0)

问题可能出在布局上。

在res / layout的content.xml中,确保将webview的android:layout_height的属性设置为fill_parent。

那应该修复。它不是,也粘贴布局的内容。我们可以提供帮助

答案 1 :(得分:0)

我不确定这是否可以帮助那些有类似问题的人,但最后我通过改变解决了我的问题:

wvContent.addView(webkit);

wvContent.addView(webkit,0,0);

不是真正的解决方案,而是一种解决方法,或许。

答案 2 :(得分:0)

我遇到了同样的问题,并认为我使用WebViewClient中的以下代码修复了它:

webView.setVisibility(View.VISIBLE);

我的问题是它只在首次加载时显示半屏,只要我点击菜单或更改设备的方向,视图就会全屏重新绘制。将它设置为Visible似乎会触发重新绘制的内容