Android 如何将AppCompat活动设置为对话框?
我需要将AppCompat活动用作对话框。为此,我尝试了StackOverflow中的解决方案。但是什么都没用,请回答我。我的活动是对话。但它的高度和宽度都很窄 我使用了以下主题:Android 如何将AppCompat活动设置为对话框?,android,android-alertdialog,android-appcompat,Android,Android Alertdialog,Android Appcompat,我需要将AppCompat活动用作对话框。为此,我尝试了StackOverflow中的解决方案。但是什么都没用,请回答我。我的活动是对话。但它的高度和宽度都很窄 我使用了以下主题: <style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowFrame">@null</item> <item name="andr
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
</style>
@空的
真的
真的
真的
@android:彩色/透明
您可以使用
对话框片段
并相应地自定义布局。public class CustomDialogFrag extends DialogFragment{
static FragmentManager fragmentManager;
public static CustomDialogFrag showDialog(FragmentManager fm){
CustomDialogFrag customDialogFrag=new CustomDialogFrag();
fragmentManager=fm;
return customDialogFrag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.dialogfrag_layout, null);
alertDialogBuilder.setView(view);
setupUI(view);
alertDialogBuilder.setTitle("Notification Message");
alertDialogBuilder.setIcon(R.drawable.notificationicon);
alertDialogBuilder.setPositiveButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return alertDialogBuilder.create();
}
void setupUI(View view){
TextView textViewOne=(TextView)view.findViewById(R.id.txtEventAlias);
TextView textViewTwo=(TextView)view.findViewById(R.id.txtTime);
TextView textViewThree=(TextView)view.findViewById(R.id.txtLogMessage);
textViewOne.setText("Text 1");
textViewTwo.setText("Text 2");
textViewThree.setText("Text 3");
}
}
对话框frag_layout.xml将
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/margin_10"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtEventAlias"
android:text="Sample"
android:textColor="@android:color/darker_gray"
android:textSize="@dimen/textSizeMedium"
android:padding="@dimen/margin_10"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtTime"
android:text="Sample"
android:textColor="@android:color/darker_gray"
android:textSize="@dimen/textSizeMedium"
android:padding="@dimen/margin_10"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtLogMessage"
android:text="Sample"
android:textColor="@android:color/darker_gray"
android:textSize="@dimen/textSizeMedium"
android:padding="@dimen/margin_10"
/>
</LinearLayout>
您可以使用DialogFragment并相应地自定义布局。
public class CustomDialogFrag extends DialogFragment{
static FragmentManager fragmentManager;
public static CustomDialogFrag showDialog(FragmentManager fm){
CustomDialogFrag customDialogFrag=new CustomDialogFrag();
fragmentManager=fm;
return customDialogFrag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.dialogfrag_layout, null);
alertDialogBuilder.setView(view);
setupUI(view);
alertDialogBuilder.setTitle("Notification Message");
alertDialogBuilder.setIcon(R.drawable.notificationicon);
alertDialogBuilder.setPositiveButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return alertDialogBuilder.create();
}
void setupUI(View view){
TextView textViewOne=(TextView)view.findViewById(R.id.txtEventAlias);
TextView textViewTwo=(TextView)view.findViewById(R.id.txtTime);
TextView textViewThree=(TextView)view.findViewById(R.id.txtLogMessage);
textViewOne.setText("Text 1");
textViewTwo.setText("Text 2");
textViewThree.setText("Text 3");
}
}
对话框frag_layout.xml将
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/margin_10"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtEventAlias"
android:text="Sample"
android:textColor="@android:color/darker_gray"
android:textSize="@dimen/textSizeMedium"
android:padding="@dimen/margin_10"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtTime"
android:text="Sample"
android:textColor="@android:color/darker_gray"
android:textSize="@dimen/textSizeMedium"
android:padding="@dimen/margin_10"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtLogMessage"
android:text="Sample"
android:textColor="@android:color/darker_gray"
android:textSize="@dimen/textSizeMedium"
android:padding="@dimen/margin_10"
/>
</LinearLayout>
在活动的onCreate中输入以下行:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_your);
// Make the window's width full sized
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
Window window = getWindow();
layoutParams.copyFrom(window.getAttributes());
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(layoutParams);
}
测试和工作。如果需要,您可以将宽度和高度设置为
包裹内容。在活动的onCreate中放置以下行:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_your);
// Make the window's width full sized
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
Window window = getWindow();
layoutParams.copyFrom(window.getAttributes());
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(layoutParams);
}
测试和工作。如果需要,您可以将宽度和高度设置为WRAP\u CONTENT
。您的问题是否以某种方式针对对话框窗口本身?让你的父母都匹配?与此类似的内容--?您也可以尝试添加“真”,抱歉…我没有得到它。我上传了我得到的内容的屏幕截图。请回答。您是否看到此引用--,并尝试过?我认为最简单的方法是获取对话框的窗口引用并设置其布局参数。您的问题是否以某种方式针对对话框的窗口本身?让你的父母都匹配?与此类似的内容--?您也可以尝试添加“真”,抱歉…我没有得到它。我上传了我得到的内容的屏幕截图。请回答。您是否看到此引用--,并尝试过?我认为最简单的方法是获取对话框的窗口引用并设置其LayoutParams。