java - Mehrere Schnittstellen mit demselben Layout?
ringa_lee
ringa_lee 2017-06-20 10:06:35
0
3
1124

Angenommen, ich habe 5 verschiedene Aktivitäten, aber das Layout und die Funktionen am unteren Rand der 5 Aktivitäten sind gleich (andere Layouts sind unterschiedlich, z. B. die Symbolleiste). Ich würde gerne fragen, wie ich das gleiche Layout nur in die Basis schreiben kann Die Klassenaktivität und dann andere Aktivitäten erben diese BaseActivity, wodurch Code nur an einer Stelle geschrieben wird, ohne dass derselbe Code in anderen Aktivitäten geschrieben wird.
ps: Wenn diese Methode nicht erreicht werden kann, gibt es eine andere Methode?

ringa_lee
ringa_lee

ringa_lee

Antworte allen(3)
習慣沉默

你可以看下这篇,看下别人的做法,希望对你有所启发:http://www.jianshu.com/p/5bab...

仅有的幸福

/q/10...
你这个问题跟上面那个问题,应该问的异曲同工,你参考下。

某草草

首先我们定义一个Boolean 变量 用于控制共有部分是否显示,并添加方法如下:

 private boolean isShowCommonView = true;

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

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

最后我们在其他继承了BaseActivity的子类的onCreate()中一定要在super.onCreate()前调用开始定义的方法setShowCommonView(Boolean)来控制共有部分是否显示。如下

//子类的生命周期函数: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();
        //其他的工作。。。
    }
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage