2012-06-04 38 views
6

Tôi muốn thêm nút vào MediaController. Vì vậy, tôi mở rộng lớp MediaController, tạo ra một nút và thêm nó vào bố cục khung. Nhưng nút mới được thêm vào không phản ánh trong khi đang chạy.Thêm nút vào MediaController

Hãy tìm mã dưới đây

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

những gì tôi đang làm sai ở đây. Bất kỳ đề xuất sẽ rất hữu ích.

Xin cảm ơn trước.

+0

Bạn đã thêm nút trong mediaController như thế nào? bạn có thể chia sẻ mã của bạn hoặc một số mẹo nhờ – Dilip

Trả lời

12

Bạn cần phải ghi đè setAnchorView trong lớp VideoController của bạn:

@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

Câu trả lời hay không :) – user1840255

+0

setanchorview làm gì – user1767754

1

Trên thực tế điều đó xảy ra vì xem phương tiện truyền thông điều khiển được xây dựng sau (trong makeControllerView phương pháp). Vì vậy, bạn cần phải ghi đè lên nó và thêm nút ở đó.

Thật không may, nó hiện đang bị ẩn. Và overAniding setAnchorView có vẻ là giải pháp tốt nhất.