java - Plusieurs interfaces avec la même mise en page?
ringa_lee
ringa_lee 2017-06-20 10:06:35
0
3
1130

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_lee
ringa_lee

ringa_lee

répondre à tous(3)
習慣沉默

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...

仅有的幸福

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

某草草

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();
        //其他的工作。。。
    }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal