一起Talk Android吧(第四百三十九回:如何合理地使用Dialog二)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百三十九回:如何合理地使用Dialog二)相关的知识,希望对你有一定的参考价值。
文章目录
各位看官们大家好,上一回中咱们说的例子是"如何合理地使用Dialog",这一回中咱们继续说该例子。闲话休提,言归正转,让我们一起Talk android吧!
上一章回中我们介绍了Dialog的标准用法,而且介绍了如何自定义窗口,最后谈到了窗口标准用法和自定义窗口的缺点,本章回将针对这些缺点做新的优化。
创建DialogActivity
官方的推荐做法(官方文档可以点击这里)是不使用自定义view,而是使用DilogActivity.其本质上就是创建一个Activity,然后给它换一个Dialog风格的style,不过创建的Activity需要继承Activity,而不是默认的AppCompatActivity,否则会有以下异常:
You need to use a Theme.AppCompat theme (or descendant) with this activity.
下面是示例程序,请大家参考:
<activity
android:name=".ui.ActivityForDialog"
android:theme="@android:style/Theme.Holo.Dialog"
android:exported="false" />
代码中的Activity使用标准的Activty就可以,因此我们就不列出它的代码。我们想对窗口进行自定义操作时直接对Activity修改就可以,比如修改大小,背景,添加控件等。这些操作和在Activity中进行操作完全相同。下面是一些示例代码:
//通过代码修改窗口的大小
public class ActivityForDialog extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_for_dialog);
Window window = getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.width = 200;
layoutParams.height = 200;
window.setAttributes(layoutParams);
//通过布局文件修改窗口的背景色,大小,添加图片控件
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/purple_200"
android:layout_width="match_parent"
android:layout_height="500dp"
tools:context=".ui.ActivityForDialog">
<ImageView
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@drawable/ic_home_black_24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>
</androidx.constraintlayout.widget.ConstraintLayout>
我们想使用自定义的窗口时不需要通过Dialog
的Builder
来创建窗口,而是直接创建一个窗口类的对象就可以,该对象就是我们上面代码中自定义的DialogActivity
.
创建自定义的Dialog
其实还有一个方法可以自定义窗口,其原理和创建Dialog窗口相同,示例代码如下,只是官方不推荐直接使用Dialog的接口进行自定义窗口.
//官方不让推荐的做法,不过可以做任意的修改,
//缺点是没有title和button等内容,需要的话只能自己添加。
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.layout_dialog_custom_view);
dialog.show();
建议与总结
最后,我分享一些对合理使用窗口的建议与总结:
- 1.如果只是显示简单的文本信息,使用标准的Dialog就可以;
- 2.如果想使用自定义窗口,那么建议使用官方推荐的DialogActivity;
- 3.自定义窗口时推荐使用Activity的布局文件或者代码来完成自定义操作,而不是简单是使用Dialog style;
看官们,关于"如何合理地使用Dialog"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第四百三十九回:如何合理地使用Dialog二)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百八十九回:如何使用代码实现ObjectAnimator)
一起Talk Android吧(第四百一十九回:让时钟走起来)
一起Talk Android吧(第四百七十九回:集合类视图动画)
一起Talk Android吧(第四百七十九回:集合类视图动画)