【问题标题】:display a child view of frame layout at the front在前面显示框架布局的子视图
【发布时间】:2014-02-21 07:43:27
【问题描述】:

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

【问题讨论】:

  • 发布你正在尝试的代码
  • indicator 是您想要更改的视图。它的父布局是什么?而不是隐藏和显示。从其父级中删除所有视图并添加指示符[currentPage]。它可能对你有帮助
  • 感谢您的回复。是的,指标是我要更改的视图。指标的父级是framelayout

标签: android view android-framelayout


【解决方案1】:

然后试试这段代码...

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 你应该详细说明文章中的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2011-10-24
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多