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

时间:2014-02-21 07:43:27

标签: android view android-framelayout

我想更改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()方法的人都将不胜感激!

2 个答案:

答案 0 :(得分:2)

然后尝试这段代码......

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();
    }
}

答案 1 :(得分:1)

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

你可以参考下面的内容 http://developer.android.com/reference/android/view/View.html#bringToFront()