2011-07-25 55 views
4

我有一個DialogFragment(顯示爲對話),其佈局包含web視圖控制。 佈局設置爲wrap_content。我正在使用平板電腦,並希望顯示爲對話框,但不希望高度與屏幕高度相匹配。動態與web視圖減少對話框的高度爲HTML內容的變化,....或固定高度

Web視圖顯示在構建時定義的HTML內容。

的HTML包含能夠隱藏和顯示內容(隱藏/顯示「的div」)的鏈接。

正如我在點擊鏈接將其展開,然後的對話框隨着內容的高度顯示。

但是,當我摺疊條目時,對話框的高度不會收縮。

我更傾向於將修復對話框的高度內容加載之後。如果隱藏內容,則會導致對話框高度降低。

在此先感謝彼得。

回答

1

雖然代碼需要清理,有可能做的簡潔方式,但我把在onPageFinished事件以下爲WebView和它d在html內容加載完成之後,爲我提供了修復對話框高度的工作。

public void onPageFinished(WebView view, String url) { 
    .... 
    webView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
     if (webView.getHeight() < currentHeight) { 
      currentHeight = webView.getHeight(); 
     } 
     final LayoutParams params = webView.getLayoutParams(); 
     params.height = currentHeight; 
     webView.setLayoutParams(params); 
     return false; 
     } 
    }); 
} 
0

雖然,我相信其爲用戶與之互動,改變大小是不是一個很好的用戶界面的對話框,這可能是可能的(我不知道你的應用程序,這樣也許我可能是誤判)。也許你應該考慮定期的活動,而不是在對話框中顯示你的Webview。

+0

感謝。不幸的是,我受到客戶要求以及平板電腦上應用程序性質的限制,將其顯示爲對話框。 – PJL

0

我來自iOS背景。你需要在iPad中使用類似於popover控件的東西。

或者,您可以使用LayoutInflator調整視圖的大小。 This blog post (Layou resources in Android)似乎描述瞭如何做到這一點。看起來人們對此有着良好的結果。

+0

感謝您的回覆。我正在使用DialogFragment,並在'onCreateView'中使視圖膨脹。在我的佈局中,我設置了'wrap_content',以便在網頁加載完成後(我的首選項)尋找修復視圖的方法,或者確定網頁中的下拉列表何時已被摺疊,然後調整對話框的大小,代碼示例會很有用。 – PJL

1

簡單的嘗試

嘗試invalidate();在onClickListener

yourWebView.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // TODO Auto-generated method stub 
     // TRY to invalidate(); 

     // Try to setVisibility(View.GONE); then directly (View.VISIBLE)  
     return false; 
    } 
}); 

更強硬的東西

  • 瀏覽過的WebView
  • 按照點擊的執行(我beleive你應該從loadUrl()開始)
  • 嘗試達到這是造成的WebView變大點的源代碼時,將顯示一個div

在那裏,你可能會找到一個方法來模仿這種行爲時的股利消失

+0

感謝您的回覆。雖然這並沒有解決我的問題,但我認爲它有可能讓我有更多的想法,也許會使正確的事情失效(我在LinearLayout中有一個FrameLayout),或者你建議深入挖掘。它確實讓我思考了我可以在觸摸事件上做的事情,並從中設法將WebView高度設置爲最低限度,從而設法修復對話框的高度。這似乎爲我工作,並修復對話框的高度(可能有其他方式,但我會作爲答案發布我的解決方案)。 – PJL

相關問題