java - 多個界面相同布局?
問題描述
假設我有5個不同的Activity但這5個activity底部的布局、功能都是一樣(其他布局不一樣例如toolBar),我想問一下如何才能讓這個相同的布局只寫在基類Activity中然后其他Activity繼承這個BaseActivity,從而實現(xiàn)只寫一個地方的代碼而其他Activity中不用在寫相同的代碼。ps:如果這個方式無法實現(xiàn),請問有其他方法沒有。
問題解答
回答1:你可以看下這篇,看下別人的做法,希望對你有所啟發(fā):http://www.jianshu.com/p/5bab...
回答2:/q/10...你這個問題跟上面那個問題,應該問的異曲同工,你參考下。
回答3:首先我們定義一個Boolean 變量 用于控制共有部分是否顯示,并添加方法如下:
private boolean isShowCommonView = true; public void setShowCommonView(boolean isShow) {isShowCommonView = isShow; }
然后我們復寫B(tài)aseActivity中的setContentView:如下
@Override public void setContentView(@LayoutRes int layoutResID) {super.setContentView(layoutResID);if (isShowBottom) { ViewGroup mDecorView = (ViewGroup) getWindow().getDecorView(); //獲得DecorView視圖層次中的FrameLayout //這個地方不清楚的可以看一下Activity的視圖層次圖就明白了 mContentRootView = (FrameLayout) ((ViewGroup) mDecorView.getChildAt(0)).getChildAt(1); mBottomView = LayoutInflater.from(getBaseContext()).inflate(R.layout.ac_main_play_view, null); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.gravity = Gravity.BOTTOM; mContentRootView.addView(mBottomView, layoutParams); //下面就是根據(jù)mBottomView.findViewById()來進行一些視圖的初始化工作 //如設置監(jiān)聽器等 } }
最后我們在其他繼承了BaseActivity的子類的onCreate()中一定要在super.onCreate()前調(diào)用開始定義的方法setShowCommonView(Boolean)來控制共有部分是否顯示。如下
//子類的生命周期函數(shù):onCreate(Bundle) @Override protected void onCreate(@Nullable Bundle savedInstanceState) {//顯示底部視圖 true為顯示 false 為隱藏setShowBottom(true);super.onCreate(savedInstanceState);setContentView(R.layout.activity_mainplay);ButterKnife.bind(this);initview();//其他的工作。。。 }
相關文章:
1. mysql 為什么主鍵 id 和 pid 都市索引, id > 10 走索引 time > 10 不走索引?2. css - chrome下a標簽嵌套img 顯示會多個小箭頭?3. css3 - 純css實現(xiàn)點擊特效4. docker網(wǎng)絡端口映射,沒有方便點的操作方法么?5. javascript - Img.complete和img.onload判斷圖片加載完成有什么區(qū)別?6. vim - docker中新的ubuntu12.04鏡像,運行vi提示,找不到命名.7. mysql - 在不允許改動數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲的時間的比較?8. java中返回一個對象,和輸出對像的值,意義在哪兒9. javascript - 有適合開發(fā)手機端Html5網(wǎng)頁小游戲的前端框架嗎?10. css - 網(wǎng)頁div區(qū)塊 像蘋果一樣可左右滑動 手機與電腦
