Maison > Questions et réponses > le corps du texte
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 ?
習慣沉默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...
仅有的幸福2017-06-20 10:08:35
/q/10...
Cette question est similaire à celle ci-dessus. Veuillez vous y référer.
某草草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();
//其他的工作。。。
}