2013-05-16 45 views
1

我有一個DialogFragment其中包含WebView。我在該活動中創建DialogFragment的一個實例,並在其上調用show方法。通常這會在活動的當前視圖上顯示爲Dialog,但隨機會將其顯示爲全屏,就像我調用setContentView方法一樣。下面是活動中的代碼:DialogFragment保持全屏顯示(不在對話框中)

InternetDialog webDialog = new InternetDialog(); 
    webDialog.setUrl(mRequestToken.getAuthenticationURL()); 
    webDialog.show(getSupportFragmentManager(), "Twitter WebView"); 

哪裏InternetDialog是延伸DialogFragment並創建onCreateDialog方法中的View類。我正在使用舊版Android操作系統版本的支持庫。所以,我的問題是:爲什麼DialogFragment顯示全屏而不是對話框?

編輯:下面是InternetDialog類的代碼:

public class InternetDialog extends DialogFragment{//the soft keyboard won't show up 
private String url; 
WebView webView; 

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme); 

} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    LayoutInflater inflater = LayoutInflater.from(getActivity()); 
    View v = inflater.inflate(R.layout.internet_dialog, null); 

    WebView web = (WebView) v.findViewById(R.id.web); 
    EditText edit = (EditText) v.findViewById(R.id.edit); 
    edit.setFocusable(true); 
    edit.requestFocus(); 
    web.loadUrl(url); 
    this.webView = web; 
    builder.setView(v); 

    return builder.create(); 

}//end of onCreateDialog() method 

public View getWebView(){ 
    return webView; 
} 

public String getUrl(){ 
    return this.url; 
}//end of getUrl() method 

public void setUrl(String url){ 
    this.url = url; 
}//end of setUrl() method 

}//end of DialogFragment class 

而這裏的internet_dialogXML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

<EditText 
    android:id="@+id/edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="true" 
    android:visibility="invisible"/> 

<WebView 
    android:id="@+id/web" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

</RelativeLayout> 
+0

等等,你是否有時會說它顯示爲對話框,但有時會顯示全屏?如果是這樣,你可以顯示你的代碼爲'InternetDialog'嗎? – kabuko

+0

是的,這就是似乎正在發生的事情,我知道的很奇怪。我放置了「InternetDialog」類的代碼。 – chRyNaN

+0

我很想看看'internet_dailog'佈局是什麼樣子,但是您是否嘗試過將'WebView'設置爲固定的高度和寬度?我很好奇頁面加載的時間是否影響視圖的大小。 – kabuko

回答

0

這是爲註釋更合適,但我可以」評論尚未...你有沒有考慮看看你的電話setStyleonCreate?從文檔的外觀上來看,它看起來就像當你設置對話框的風格,STYLE_NO_FRAME 可以與窗口大小的干擾,因爲得到的看法完全取決於onCreateView膨脹的看法。