向MediaController添加按钮

时间:2012-06-04 10:17:16

标签: mediacontroller

我想为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() {
}
}
我在这里做错了什么。任何建议都会有所帮助。

提前致谢。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

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

不幸的是,它目前是隐藏的。并且重写setAnchorView似乎是最好的解决方案。