【发布时间】: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