DialogFragment一直显示全屏(不在对话框中)

时间:2013-05-16 20:28:08

标签: java android view android-fragments android-dialogfragment

我有DialogFragment,其中包含WebView。我在活动中创建DialogFragment的实例,并在其上调用show方法。通常,这会在活动的当前视图上显示为Dialog,但随机会将其全屏显示,就像我调用setContentView方法一样。这是活动中的代码:

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

其中InternetDialog是一个扩展DialogFragment并在View方法中创建onCreateDialog的类。我正在使用旧版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_dialog XML文件:

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

1 个答案:

答案 0 :(得分:0)

这更适合作为评论,但我还不能发表评论......您是否考虑过在setStyle中查看您对onCreate的来电?从文档的外观来看,当您设置对话框的样式时,STYLE_NO_FRAME 可能会干扰窗口大小,因为生成的视图完全取决于onCreateView中的膨胀视图。