0

我有一個鏈接到媒體文件的列表視圖,它工作正常,但沒有mediacontroller,應用mediacontroller後,我無法從列表中選擇另一個項目mediacontroller的外觀,我只能滾動列表視圖,但我不能選擇任何項目。我如何在Mediacontroller的外觀期間使列表視圖可選?Android MediaController - 無法點擊項目

注意:它在mediacontroller隱藏時工作。注意2:播放媒體文件的過程中一直顯示媒體控制器。

感謝

[編輯]

這裏是我的佈局代碼,請參閱返回按鈕(該按鈕爲可點擊),但項目的名單是不是...

..... 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:id="@+id/main_audio_player" 
     android:orientation="horizontal" 
     ></LinearLayout> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_marginTop="100dp" 
     > 
     <Button 
      android:layout_width="150dp" 
      android:layout_height="50dp" 
      android:text="Return" 
      android:id="@+id/btnReturn" 
      android:clickable="true" 
      android:layout_marginTop="10dp" 

      > 
     </Button> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 
       <ListView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/lvPlaylist" 
        android:alpha="0.3"> 

       </ListView> 
      </LinearLayout> 
     </LinearLayout> 
    </LinearLayout> 

.....

[編輯2]

這裏是我的onPrepared功能

public void onPrepared(MediaPlayer mediaPlayer) { 

    try { 

     mediaController.setMediaPlayer(this); 

     mediaController.setAnchorView(findViewById(R.id.main_audio_player)); 

     handler.post(new Runnable() { 

      public void run() { 


       mediaController.setEnabled(true); 
       mediaController.show(); 
      } 

     }); 

    } 
    catch (Exception mediaError) 
    { 
     Toast error = Toast.makeText(getApplicationContext(),"Media player error!",1000); 
     error.show(); 
    } 
} 

和這裏是我的播放聲音功能......

public void PlayAudioFile(String filename){ 

    if(!emptyList){ 
     if(IsPlayed) 
     { 
      mediaPlayer.stop(); 
      mediaPlayer.release(); 
     } 
     Integer fileIndex =0; 
     if(filename != ""){ 
      fileIndex = myPlaylist.GetIndexByFilename(filename); 
     } 

     mediaPlayer = new MediaPlayer(); 
     if(myPlaylist.GetNumberOfItems()>0) 
     { 
      try { 

       audioFile = myPlaylist.GetItemWithPathInPlaylistByPositionId(fileIndex); 
       audioName = myPlaylist.GetItemInPlaylistByPositionId(fileIndex); 
       ((TextView)findViewById(R.id.now_playing_text)).setText(audioName); 

       mediaPlayer.setOnPreparedListener(this); 

       mediaController = new MediaController(this); 
      } 
      catch (Exception errorPlayer){ 

      } 
      try { 
       mediaPlayer.setDataSource(audioFile); 
       mediaPlayer.prepare(); 
       mediaPlayer.start(); 

       IsPlayed = true; 
      } catch (IOException e) { 

      } 
     } 
    } 

} 

我希望這是足以讓你給我一些建議,做什麼:)

+0

這種方法被包含在同一視圖中ListView的,你傳遞給setAnchorView? – Dave

+0

@Dave:是的,我的ListView包含在我的播放器所在的視圖中。 – Mahuna

+0

您是否可以使用用於創建和設置MediaController的代碼更新問題? MediaController將創建一個單獨的窗口,我相信它覆蓋了您的ListView而不是按鈕。不過,我無法確定如何在不查看代碼的情況下修復它。 – Dave

回答

0

薩拉姆。不要使用setOnItemClickListener作爲您的listView
改爲使用Onclick作爲您的listView行的父級佈局。
這樣的:

list_row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:onClick="playSelectedPodcast" > <!--- this is important--> 
    <TextView 
     android:id="@+id/podcast_row_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#000000" 
     android:layout_gravity="right|center_vertical" 
     /> 
</LinearLayout> 

,然後寫在你的活動

public void playSelectedPodcast(View view){ 
    ViewHolder tag = (ViewHolder) view.getTag(); 
    mMediaController.show(5000); 
    podcastIndex = tag.position; 
    playPodcast(tag.position); 
}