recherche

Maison  >  Questions et réponses  >  le corps du texte

java - Plusieurs interfaces avec la même mise en page?

Supposons que j'ai 5 activités différentes, mais que la mise en page et les fonctions au bas des 5 activités sont les mêmes (les autres mises en page sont différentes, comme la barre d'outils). J'aimerais demander comment créer cette même mise en page uniquement écrite dans la base. class Activity puis Other Activities héritent de cette BaseActivity, écrivant ainsi du code uniquement à un seul endroit sans écrire le même code dans d'autres activités.
ps : Si cette méthode ne peut pas être réalisée, existe-t-il une autre méthode ?

ringa_leeringa_lee2743 Il y a quelques jours1136

répondre à tous(3)je répondrai

  • 習慣沉默

    習慣沉默2017-06-20 10:08:35

    Vous pouvez lire cet article et voir ce que d'autres ont fait. J'espère qu'il vous inspirera : http://www.jianshu.com/p/5bab...

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-06-20 10:08:35

    /q/10...
    Cette question est similaire à celle ci-dessus. Veuillez vous y référer.

    répondre
    0
  • 某草草

    某草草2017-06-20 10:08:35

    Nous définissons d'abord une variable booléenne pour contrôler si la partie commune est affichée, et ajoutons la méthode comme suit :

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

    Ensuite, nous remplaçons setContentView dans BaseActivity : comme suit

     @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()来进行一些视图的初始化工作
               //如设置监听器等 
            }
        }

    Enfin, dans onCreate() des autres sous-classes qui héritent de BaseActivity, il faut appeler la méthode setShowCommonView (Boolean) définie au début avant super.onCreate() pour contrôler si la partie commune est affichée. Comme suit

    //子类的生命周期函数: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();
            //其他的工作。。。
        }

    répondre
    0
  • Annulerrépondre