2012-06-04 14 views
6

Ich möchte MediaController eine Schaltfläche hinzufügen. Also habe ich die MediaController-Klasse erweitert, eine Schaltfläche erstellt und sie in das Frame-Layout eingefügt. Aber der neu hinzugefügte Knopf spiegelt sich nicht während des Laufens.Hinzufügen einer Schaltfläche zu MediaController

finden Sie den Code unten

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

, was ich falsch hier tue. Irgendwelche Vorschläge werden hilfreich sein.

Vielen Dank im Voraus.

+0

Wie haben Sie Knopf in MediaController hinzugefügt? können Sie Ihren Code oder einige Tipps dank teilen – Dilip

Antwort

12

Sie haben setAnchorView in Ihrer VideoController Klasse außer Kraft zu setzen:

@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

Große Antwort :) – user1840255

+0

Was tut Setanchorview tun – user1767754

1

Eigentlich das passiert, weil nach Ansicht der Mediensteuerung später aufgebaut ist (in makeControllerView Methode). Also müssen Sie es überschreiben und Button dort hinzufügen.

Leider ist es im Moment versteckt. Übergeordnetes SetAnchorView scheint die beste Lösung zu sein.

Verwandte Themen