博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android屏幕底部弹出DialogFragment(3)
阅读量:6252 次
发布时间:2019-06-22

本文共 2895 字,大约阅读时间需要 9 分钟。



Android屏幕底部弹出DialogFragment(3)

附录文章1,2的DialogFragment是常规的DialogFragment,但是现在的一些Android开发中,往往需要从底部弹出一个功能对话框供用户选择使用。这种底部弹出的对话框开源项目也很多,比如附录文章3,4,5,6,7,8,9,10,11。

对Android原生的DialogFragment进行改造,也可以实现底部弹出的对话框(面板)。重点是要设置重载DialogFragment的Gravity位置:Gravity.BOTTOM。
写一个例子:

package zhangphil.demo;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.app.DialogFragment;import android.app.FragmentManager;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.TextView;public class MainActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		final FragmentManager fm = this.getFragmentManager();		findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {			@Override			public void onClick(View v) {				BottomDialogFragment f = new BottomDialogFragment();				f.show(fm, BottomDialogFragment.class.getName());			}		});		;	}	public class BottomDialogFragment extends DialogFragment {		@Override		public Dialog onCreateDialog(Bundle savedInstanceState) {			Dialog dialog = new Dialog(getActivity(), R.style.BottomFragmentDialog);			// 必须在setContentView之前调用。否则运行时报错。			dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);			LayoutInflater inflater = getActivity().getLayoutInflater();			View view = inflater.inflate(android.R.layout.simple_list_item_2, null);			TextView text1 = (TextView) view.findViewById(android.R.id.text1);			text1.setText("zhang phil");			TextView text2 = (TextView) view.findViewById(android.R.id.text2);			text2.setText("zhang phil @ csdn");			// 底部弹出的DialogFragment装载的View			dialog.setContentView(view);			dialog.setCancelable(true);			dialog.setCanceledOnTouchOutside(true);			// 设置底部弹出显示的DialogFragment窗口属性。			Window window = dialog.getWindow();			WindowManager.LayoutParams params = window.getAttributes();			params.gravity = Gravity.BOTTOM;			params.width = WindowManager.LayoutParams.MATCH_PARENT;			params.height = 1000; // 底部弹出的DialogFragment的高度,如果是MATCH_PARENT则铺满整个窗口			window.setAttributes(params);			return dialog;		}	}}

需要在styles.xml文件里面定义一个style:

代码运行结果:

附录:
1,《Android DialogFragment(1)》链接地址:
2,《Android DialogFragment(2)》链接地址:

Android BottomSheet相关:

3,《Android BottomSheet:便捷易用的底部滑出面板(1)》链接地址: 
4,《Android BottomSheet:以选取图片为例(2)》链接地址: 
5,《Android BottomSheet:List列表或Grid网格展示(3)》链接地址:
6,《Android BottomSheet:底部弹出Fragment面板(4)》链接地址:

AndroidSweetSheet相关:

7,《AndroidSweetSheet:从底部弹出面板(1)》链接地址:
8,《AndroidSweetSheet:ViewPager的实现(2)》链接地址:

AndroidSlidingUpPanel相关:
9,《Android自底部平滑向上滑出面板的AndroidSlidingUpPanel》链接地址:  

Android DraggablePanel相关:

10,《Android音乐、视频类APP常用控件:DraggablePanel(1)》链接地址:  
11,《Android音乐、视频类APP常用控件:DraggablePanel(2)》链接地址:

转载于:https://www.cnblogs.com/hehehaha/p/6147262.html

你可能感兴趣的文章
TCP/IP五层协议
查看>>
单例模式 写法
查看>>
关于ComponentScan
查看>>
JavaScript-算法-数组去除重复的元素
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
Netty实战之使用Netty解析交通部JT808协议
查看>>
手拉手教你实现一门编程语言 Enkel, 系列 9
查看>>
HTML 基础
查看>>
转行的程序猿都去做什么了?这些个案羡煞我也
查看>>
用Kotlin-koans学Kotlin【三】ii_collections
查看>>
java map 轉json,簡書搬遷到掘金
查看>>
React 源码解析之React.Children
查看>>
Node.js线上服务器部署与发布
查看>>
vue插槽以及作用域插槽的理解
查看>>
学习笔记(4.23)
查看>>
小程序开发前的准备工作之【深入封装Component】
查看>>
AFN3.0源码解析
查看>>
猪行天下之Python基础——2.1 Python注释与模块
查看>>
直播项目---弹幕问题
查看>>
使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
查看>>