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 に答える