我正在开发一款Android应用。在我的应用程序中,我想在对话框中显示数据。基本上,我想在单击按钮时在对话框中显示Activity
。我知道如何将Activity
显示为对话框。请看下面我当前如何将对象显示为对话框。
我在Activity
中设置了AndroidManifest
<activity
android:configChanges="orientation|screenSize"
android:name=".MakeCommentActivity"
android:label="Comment"
android:theme="@android:style/Theme.Holo.Light.Dialog" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
所以当我打开活动时。它显示为如下对话框。
正如您在屏幕截图中看到的,上面代码的问题是我无法完全控制设计。我的意思是我不能按我的意愿设置对话框的背景颜色。我会根据设备改变。我不能改变对话的主题。此外,我无法删除对话框的标题等。
请看一下
与上面的截图相似,我将完全控制设计。我可以在标题中添加图标。我可以设置我想要的任何主题等等。
所以我能想到的是使用带有自定义视图的警告对话框。但是如果我这样做,代码就不会干净整洁,因为所有的逻辑和代码都将放在父活动中。不在不同的活动中。
所以我的问题是如何打开Activity
对话框,可以在设计中完全自定义?如果无法完全自定义,使用自定义视图的警告对话框是个好主意?因为我会在Facebook上显示评论。用户也可以发表评论。
答案 0 :(得分:3)
您实际在做的是,您只是在改变活动的主题。
实现目标的最佳方法是创建custom view Dialog
:
//Here you inflate your design (xml layout)
View view = getLayoutInflater().inflate(R.layout.your_view, null);
//Here you can get any component of that layout (ex: textView)
TextView yourTextView = view.findViewById(R.id.your_textview_id);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(view);
AlerdDialog alert = builder.create();
alert.show();
这样你可以按照自己的意愿控制它
答案 1 :(得分:1)
除了具有透明背景的活动之外,这些看似美丽的警报对话通常不是警报性的。正确放置Onclicklisteners(例如,单击透明背景将关闭活动)。因此,与自定义alertdialog
相比,设计这些活动更容易答案 2 :(得分:1)
我有一个主题类型为Dialog
的{{1}}。它很容易定制,是的,当您将登录放在另一个类中时,代码变得更清晰。
所以我想建议你一些事情。首先要删除intent-filter
。我实际上并不知道为什么使用intent-filter
,但无论如何,看起来并不是非常必要。
<activity
android:configChanges="orientation|screenSize"
android:name=".MakeCommentActivity"
android:label="Comment"
android:theme="@android:style/Theme.Holo.Light.Dialog" >
</activity>
作为对话框的Activity
的布局非常重要。您需要将layout_height
和layout_width
设置为match_parent
,以检查是否可以获得自定义行为。
您提到的关于Activity
标签的另一件事,可以setTitle
从您onCreate
的{{1}}功能轻松更改Activity
。
这是我的DialogActivity
例如
public class DialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
setTitle("My custom title");
}
}
这里使用的布局是
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@android:color/white"
android:layout_height="match_parent"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_margin="@dimen/activity_horizontal_margin"
android:background="@android:color/black"
android:layout_height="200dp" />
<View
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@android:color/black" />
</LinearLayout>
答案 3 :(得分:0)
你可以使用AlertDialog基本上可以使用Android AlertDialog来显示带有OK和Cancel按钮的对话框消息。它可用于中断并询问用户他/她选择继续或停止。
Android AlertDialog由三个区域组成:标题,内容区域和操作按钮。如果您不需要,可以留下操作按钮。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//Setting message manually and performing action on button click
builder.setMessage("Do you want to close this application ?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Action for 'NO' Button
dialog.cancel();
}
});
//Creating dialog box
AlertDialog alert = builder.create();
//Setting the title manually
alert.setTitle("AlertDialogExample");
alert.show();
答案 4 :(得分:0)
最好使用AlertDialog。因为如果按主题完成,那么对于不同版本的设备,它的外观将会改变。