2012-11-07 8 views

Odpowiedz

9

Sam znalazłem rozwiązanie. Jeśli użyjesz LinearLayout jako widoku głównego dla DialogFragment, stanie się to, a zmiana go na FrameLayout rozwiązuje problem. Nie rozumiem dlaczego, ale działa.

+2

W moim przypadku był to widok korzeń FrameLayout i przeszedłem ją RelativeLayout i magicznie pracował ... bardzo dziwne. Teraz nie jest poprawnie dopasowany do zawartości, co oznacza, że ​​jest zgodny, ale to dla mnie. – for3st

0

Jeśli możesz ładować widok sieciowy za pomocą AsyncTaks, fragment okna dialogowego nie jest wyświetlany, ponieważ AsyncTasks nie może zmienić układu, który jest w głównym wątku. Spójrz na to.

1

W moim przypadku użyłem niestandardowego WebView takiego jak ExpandableHeightWebView dla wysokości dynamicznej.

@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); 
    } 
} 

Dzwonię setExpanded(true); po myWebView.loadData(data,null);
ten problem rozwiązać, gdy usunę setExpanded(true); linię.

1

Próbowałem na dwóch urządzeniach.

Na pierwszym urządzeniu Nexus 6 działał tak, jak powiedział David "Znalazłem rozwiązanie samemu.Jeśli użyjesz LinearLayout jako widoku głównego dla twojego DialogFragment, stanie się to, zmiana go na FrameLayout rozwiązuje problem. Nie rozumiem, dlaczego, ale działa ". Ale próbowałem w drugim urządzeniu (Galaxy Prime) i zaskoczyłem, nie działał. Po wypróbowaniu ustaw setVisible GONE WebView w moim WebViewClient wewnątrz callback onPageStarted() i po setVisible VISIBLE wewnątrz callback onPageFinished() i pracował dla mnie.

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); 
 
    } 
 

 
}