java - Pelbagai antara muka dengan susun atur yang sama?
ringa_lee
ringa_lee 2017-06-20 10:06:35
0
3
1126

Andaikan saya mempunyai 5 aktiviti berbeza, tetapi susun atur dan fungsi di bahagian bawah 5 aktiviti adalah sama (susun atur lain adalah berbeza, seperti toolBar saya ingin bertanya bagaimana untuk membuat susun atur yang sama ini hanya ditulis di pangkalan). Aktiviti kelas dan kemudian Aktiviti lain mewarisi BaseActivity ini, dengan itu hanya menulis kod di satu tempat tanpa menulis kod yang sama dalam aktiviti lain.
ps: Jika kaedah ini tidak dapat dicapai, adakah kaedah lain?

ringa_lee
ringa_lee

ringa_lee

membalas semua(3)
習慣沉默

Anda boleh membaca artikel ini dan melihat apa yang telah dilakukan oleh orang lain, saya harap ia akan memberi inspirasi kepada anda: http://www.jianshu.com/p/5bab...

仅有的幸福

/q/10...
Soalan anda ini sama seperti di atas.

某草草

Mula-mula kita mentakrifkan pembolehubah Boolean untuk mengawal sama ada bahagian biasa dipaparkan, dan tambah kaedah seperti berikut:

 private boolean isShowCommonView = true;

  public void setShowCommonView(boolean isShow) {
        isShowCommonView = isShow;
    }

Kemudian kami mengatasi setContentView dalam BaseActivity: seperti berikut

 @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);
           //下面就是根据mBottomView.findViewById()来进行一些视图的初始化工作
           //如设置监听器等 
        }
    }

Akhir sekali, dalam onCreate() subkelas lain yang mewarisi BaseActivity, kita mesti memanggil kaedah setShowCommonView (Boolean) yang ditakrifkan pada permulaan sebelum super.onCreate() untuk mengawal sama ada bahagian biasa dipaparkan. Seperti berikut

//子类的生命周期函数: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();
        //其他的工作。。。
    }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan