在前面显示框架布局的子视图



我想更改FrameLayout的视图层,并尝试调用bringToFront()方法。它不起作用。然后,我试着setVisibility(View.GONE)setVisibility(View.VISIBLE). 同样,它不起作用。

事实上,这两种方法都可以只更改顶层一次。第二次,他们都失败了。

我该怎么做?

private void next(){
    if(currentPage < MAX_INDEX){
        currentPage++;
        //indicator[currentPage].bringToFront();
        for(int i=0; i < MAX_INDEX; ++i){
            indicator[i].setVisibility(View.INVISIBLE);
        }
        Log.d("current page:", "current page = " + currentPage);
        indicator[currentPage].setVisibility(View.VISIBLE);
    } else {
        startActivity(new Intent(SetupActivity.this, MainActivity.class));
        SetupActivity.this.finish();
    }
}

注意: removeAllViews()然后addView()对我有用。任何想解释为什么我不能使用bringToFront()setVisibility()方法的人,将不胜感激!

然后试试这段代码...

private void next(){
    if(currentPage < MAX_INDEX){
        currentPage++;
        //indicator[currentPage].bringToFront();
        framelayout.removeAllViews();
        Log.d("current page:", "current page = " + currentPage);
        framelayout.addView(indicator[currentPage]);
    } else {
        startActivity(new Intent(SetupActivity.this, MainActivity.class));
        SetupActivity.this.finish();
    }
}

在你调用 bringToFront() 之后,另外两个方法:requestLayout() 和 invalidate() 应该在视图的父视图上调用,以强制父级重绘;

您可以在下面参考http://developer.android.com/reference/android/view/View.html#bringToFront()

最新更新