我想为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() {
}
}
我在这里做错了什么。任何建议都会有所帮助。
提前致谢。
答案 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似乎是最好的解决方案。