7

我想向 MediaController 添加一个按钮。所以我扩展了 MediaController 类,创建了一个按钮并将其添加到框架布局中。但是新添加的按钮在运行时没有反映。

请在下面找到代码

 public class VideoController extends MediaController {

private Button searchButton;
public VideoController(Context context) {
    super(context);

    searchButton = new Button(context);
    searchButton.setText("Search");
    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.gravity = Gravity.RIGHT;
    System.out.println("Adding a button");

    addView(searchButton, params);
    //updateViewLayout(this, params);
}

@Override
public void hide() {
}
}

我在这里做错了什么。任何建议都会有所帮助。

提前致谢。

4

2 回答 2

14

你必须setAnchorView在你的VideoController类中覆盖:

 @Override 
 public void setAnchorView(View view) {
     super.setAnchorView(view);

     Button searchButton = new Button(context);
     searchButton.setText("Search");
     FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     params.gravity = Gravity.RIGHT;
     addView(searchButton, params);
}
于 2012-06-22T19:19:53.703 回答
1

实际上这是因为媒体控制器的视图是稍后构造的(在makeControllerView方法中)。所以你需要覆盖它并在那里添加按钮。

不幸的是,它目前是隐藏的。覆盖 setAnchorView 似乎是最好的解决方案。

于 2014-04-01T14:38:44.473 回答