【问题标题】:DialogFragment keeps displaying full screen (not in a dialog)DialogFragment 一直显示全屏(不在对话框中)
【发布时间】:2013-05-16 20:28:08
【问题描述】:

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

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

【问题讨论】:

  • 等等,你是说有时它显示为对话框,但有时它显示为全屏?如果是这样,你能显示你的代码InternetDialog吗?
  • 是的,这似乎是正在发生的事情,我知道很奇怪。我放置了InternetDialog 类的代码。
  • 我也很想看看internet_dailog 的布局是什么样的,但是您是否尝试过将WebView 设置为固定的高度和宽度?我很好奇页面加载的时间是否会影响视图的大小。
  • 我没有尝试将WebView 设置为特定大小。但是,我注意到一旦它显示全屏,每次我通过ADT 重新安装时都会继续这样做。唯一会回到Dialog 的情况是,如果我从设备上删除应用程序然后重新安装。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2013-08-21
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多