【问题标题】:Adding a view inside a view在视图中添加视图
【发布时间】:2016-02-04 14:49:46
【问题描述】:

我正在尝试制作一个音乐播放器,但我被这个问题困扰了大约一天。

所以我正在做的是我正在学习一个教程。我们使用一个名为 MediaController 的类来控制(如播放/暂停、进度条等)您的媒体。

现在我正在尝试自己做同样的事情。也就是说,我是

  1. 我正在发送一个视图(在本例中为列表视图),以编程方式发送给一个类
  2. 在这个视图中添加一个框架布局(这是我在android源码中看到的)
  3. 框架布局使用之前制作的名为 media_controller 的 xml。

这是一些代码。

public void anchorToView(View view){
    mainView = view;
    view.addOnLayoutChangeListener(layoutChangeListener);

     frameParams = new FrameLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT
    );

    removeAllViews();
    View v = makeControllerView();
}

private OnLayoutChangeListener layoutChangeListener = new OnLayoutChangeListener() {

    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight,
            int oldBottom) {
    }
};

private View vDemo;
private ImageButton pauseButton;

public View makeControllerView(){
    LayoutInflater inflater=  (LayoutInflater) context.getSystemService
            (Context.LAYOUT_INFLATER_SERVICE);
    vDemo = inflater.inflate(R.layout.media_controller, null);

    pauseButton = (ImageButton) vDemo.findViewById(R.id.pause);

    return vDemo;
}

【问题讨论】:

  • 那么问题出在哪里?
  • 没有额外显示(我的意思是我在列表视图之外创建的视图)。

标签: android view android-framelayout


【解决方案1】:

你创建了你的控制器视图,但在调用 removeAllViews() 之后永远不要将它添加到父视图中。你需要做这样的事情:

mainView.addView(v); // V being your controller view returned from makeControllerView()

【讨论】:

  • 我试过了,其实没有view添加view的方法。
  • 虽然我还在寻找更好的答案。但我从 Devsil 的回答中得到了线索。那是使用视图组。 addView 方法仅适用于视图组类..因此使用它。但仍在等待更好的答案。
  • 如果您知道您的 mainView 是什么类型的视图组(如果是一个)(LinearLayout、RelativeLayout、FrameLayout 等),您可以将该视图转换为适当的视图。像这样 ((Linearlayout)mainView).addView(v);
  • 但我将在不同的活动中使用这种方法,并提供不同的视图。因此查看组。
  • 很好地转换为 ViewGroup 并添加视图,LinearLayout、RelativeLayout、FrameLayout 等都从 ViewGroup 扩展而来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多