Android中可以用隨意替換指定的View(比如在某個位置展示空頁面,無網頁面之類的)
阿新 • • 發佈:2019-01-23
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();
如果你覺得幫到了你,請給作者打賞一口飯吃: