2012-06-04 19 views
6

Quiero agregar un botón a MediaController. Así que extendí la clase MediaController, creé un botón y lo agregué al diseño del marco. Pero el botón recién agregado no se refleja mientras se está ejecutando.Agregar un botón a MediaController

Por favor, encontrar el código de abajo

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() { 
} 
} 

lo que estoy haciendo mal aquí. Cualquier sugerencia será de ayuda.

Gracias de antemano.

+0

¿Cómo se ha agregado el botón en mediaController? puedes compartir tu código o algunos consejos gracias – Dilip

Respuesta

12

Tiene que reemplazar setAnchorView en su clase 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); 
} 
+0

Gran respuesta :) – user1840255

+0

¿Qué hace setanchorview do – user1767754

1

En realidad esto sucede porque la opinión del controlador de medios se construye más tarde (en makeControllerView método). Entonces debes anularlo y agregar el botón allí.

Lamentablemente, está oculto por el momento. Y anulando setAnchorView parece ser la mejor solución.

Cuestiones relacionadas