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); 
}