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