2012-11-07 137 views
8

WebViewを内部に持つDialogFragmentがあります。 webviewがページをすばやく読み込めない場合、DialogFragmentは完全に縮小され、webviewは表示されません。それ以外の場合は、読み込みが高速だった場合は、WebViewが表示されます。android dialogFragment "時には" webviewが表示されない

答えて

9

自分で解決策を見つけました。 LinearLayoutをDialogFragmentのルートビューとして使用すると、これが起こります。これをFrameLayoutに変更すると、問題が解決されます。なぜか分かりませんが、それはうまくいきます。

+2

私の場合はルートビューはでframeLayoutだったと私はRelativeLayoutにそれを切り替えて、それは魔法のように働いていた...非常に奇妙な。それは今doesn '正確に内容のそれはmatches_parentを意味するが、それは私のために大丈夫です。 – for3st

0

AsyncTaksを介してWebビューを読み込むと、AsyncTasksがメインスレッド内のレイアウトを変更できないため、ダイアログフラグメントが表示されません。 それを見てください。

1

私の場合、動的な高さのためにExpandableHeightWebViewのようなカスタムWebViewを使用しました。

@Override 
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
{ 
    if (isExpanded()) 
    { 

     int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, 
       MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 

     ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = getMeasuredHeight(); 
    } 
    else 
    { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 
} 

私はmyWebView.loadData(data,null);
私はsetExpanded(true);行を削除すると解決し、この問題が発生した後setExpanded(true);を呼んでいます。

1

私は2つのデバイスで試しました。

最初のデバイスでNexus 6はDavidのように機能しました "自分で解決策を見つけました.DialogFragmentのルートビューとしてLinearLayoutを使用すると、これがFrameLayoutに変更され問題が解決しました。しかしそれは働く "。しかし、私は2番目のデバイス(ギャラクシープライム)で試して驚き、働いていない。コールバックonPageStarted()の内側とsetVisible VISIBLEコールバックonPageFinished()の中で私のWebViewClientでsetVisible Gone WebViewを試してみました。

public class MyWebClient extends WebViewClient { 
 

 
    private static final String LOG_CAT = "NetPayWebClient"; 
 

 
    @Override 
 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
 
     Log.e(LOG_CAT, "onPageStarted(): " + url); 
 
     view.setVisibility(View.GONE); 
 
     super.onPageStarted(view, url, favicon); 
 
    } 
 

 
    @Override 
 
    public void onPageFinished(WebView view, String url) { 
 
     Log.e(LOG_CAT, "onPageFinished(): " + url); 
 
     view.setVisibility(View.VISIBLE); 
 
     super.onPageFinished(view, url); 
 
    } 
 

 
}

関連する問題