Android中可以用随意替换指定的View(比如在某个位置展示空页面,无网页面之类的)
2017-03-30 15:20
399 查看
Android中要在某个地方展示空页面,或者无网页面,开发者一般都是直接覆盖个页面上去,在需要的时候显示,不需要隐藏。这样就扰乱了代码的逻辑性。今天写了个小工具,可以随意指定在某个View上展示空页面。代码很简单,如下,相信很快就能看明白:
如果你觉得帮到了你,请给作者打赏一口饭吃:
public class ReplaceViewHelper { private View mTargetView; private View mReplaceView = null; private Context mContext; private ReplaceViewHelper() { } public ReplaceViewHelper(Context context) { mContext = context; } /** * 用来替换某个View,比如你可以用一个空页面去替换某个View * * @param targetView 被替换的那个View * @param replaceViewResId 要替换进去的布局LayoutId * @return */ public ReplaceViewHelper toReplaceView(View targetView, final int replaceViewResId) { toReplaceView(targetView, View.inflate(mContext, replaceViewResId, null)); return this; } /** * 用来替换某个View,比如你可以用一个空页面去替换某个View * * @param targetView 被替换的那个View * @param replaceView 要替换进去的那个View * @return */ public ReplaceViewHelper toReplaceView(View targetView, final View replaceView) { mTargetView = targetView; if (mTargetView == null) { return this; } else if (!(mTargetView.getParent() instanceof ViewGroup)) { return this; } ViewGroup parentViewGroup = (ViewGroup) mTargetView.getParent(); int index = parentViewGroup.indexOfChild(mTargetView); if (mReplaceView != null) { parentViewGroup.removeView(mReplaceView); } mReplaceView = replaceView; mReplaceView.setLayoutParams(mTargetView.getLayoutParams()); parentViewGroup.addView(mReplaceView, index); //RelativeLayout时别的View可能会依赖这个View的位置,所以不能GONE if (parentViewGroup instanceof RelativeLayout) { mTargetView.setVisibility(View.INVISIBLE); } else { mTargetView.setVisibility(View.GONE); } return this; } /** * 移除你替换进来的View */ public final ReplaceViewHelper removeView() { if (mReplaceView != null && mTargetView != null) { if (mTargetView.getParent() instanceof ViewGroup) { ViewGroup parentViewGroup = (ViewGroup) mTargetView.getParent(); parentViewGroup.removeView(mReplaceView); mReplaceView = null; mTargetView.setVisibility(View.VISIBLE); } } return this; } /** * @return 返回你替换进来的View */ public final View getView() { return mReplaceView; } }使用方法:
//初始化: private ReplaceViewHelper mReplaceViewHelper; mReplaceViewHelper = new ReplaceViewHelper(this); //替换: mReplaceViewHelper.toReplaceView(mListView, R.layout.ff_empty_layout); //移除: mReplaceViewHelper.removeView();
如果你觉得帮到了你,请给作者打赏一口饭吃:
相关文章推荐
- UIImageView:可以通过UIImage加载图片赋给UIImageView,加载后你可以指定显示的位置和大小。 1、初始化
- 【Android】Web开发之使用WebView控件展示Web页面
- Android实现深度链接(APP外带动态参数唤醒APP,并跳转指定页面,APP不论在不在运行都可以)
- Android中替换WebView加载网页失败时的页面
- Android 自定义PopupWindow指定位置或给定View坐标弹出
- 不用锚点也可以平滑滚动到页面的指定位置实现代码
- android——代码实现在指定位置显示View
- android开发步步为营之101:动态调整view的宽度和高度以及在页面的坐标位置
- android 判断点击的位置是不是在指定的view上
- android ViewPager 默认显示指定的位置
- 【从头学android】使用setContentView(View)替换setContentView(int),这样切换布局就可以保留切换前的状态啦
- Android自定义Toast,指定Toast信息显示的位置并使用Toast显示其他View
- Android WebView从assets中加载html5页面,实现地理位置定位
- 不用锚点也可以平滑滚动到页面的指定位置
- Android RecycleView 的findChildViewUnder()方法,十分方便返回指定位置的childView
- android 判断点击的位置是不是在指定的view上
- Android自定义可以随意拖动的ImageView和TextView
- [Android分享] GridView滚动到指定位置,可以试着去做保留上次浏览位置
- Android 自定义PopupWindow指定位置或给定View坐标弹出
- Android中【下拉刷新/上拉加载】WebView网页控件,Snackbar+CoordinatorLayoutt提示框(指定位置显示的提示框)