Android MediaController - 无法单击项目

时间:2013-11-22 14:49:30

标签: android android-layout android-listview android-mediaplayer android-custom-view

我有一个列表视图,其中包含媒体文件的链接,它工作正常,但没有mediacontroller,应用mediacontroller后,我无法在mediacontroller的外观中从列表中选择其他项目,我只能滚动列表视图,但我无法选择任何项目。如何在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) {

            }
        }
    }

}

我希望这足以让你给我一些建议:)

1 个答案:

答案 0 :(得分:0)

萨拉姆。不要将setOnItemClickListener用于listView 而是使用Onclick作为listView ROW的父布局 像这样:

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