在视图中添加视图

时间:2016-02-04 14:49:46

标签: android view android-framelayout

我正在尝试制作一个音乐播放器,我在这个问题上坚持了大约一天。

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

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

  1. 我将视图(在本例中为列表视图)发送到将以编程方式
  2. 的类
  3. 在此视图中添加一个框架布局(这是我在android源代码中看到的)
  4. 框架布局使用先前调用的xml作为media_controller。
  5. 这是一些代码。

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

1 个答案:

答案 0 :(得分:0)

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

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