1

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

在此处输入图像描述

这是我的代码:

@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正常工作。

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

已编辑

这是布局:

<?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>   

4

3 回答 3

0

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

webView.setVisibility(View.VISIBLE);

我的问题是它在第一次加载时只显示半屏,只要我单击菜单或更改设备的方向,视图就会以全屏方式重新绘制。将其设置为可见似乎会触发重新绘制该修复

于 2014-12-01T21:22:12.133 回答
0

问题可能出在布局上。

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

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

于 2012-12-02T16:32:34.440 回答
0

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

wvContent.addView(webkit);

wvContent.addView(webkit,0,0);

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

于 2013-04-30T10:01:00.877 回答