在Mediacontroller中添加textView

时间:2014-05-03 14:52:15

标签: android textview mediacontroller

我需要在MediaController中添加一个textview,它显示播放歌曲的名称。目前,我重写了MediaController类的setAnchorView方法。但我不知道如何让那里的歌曲名称填充。我在Activity类中播放歌曲名称的值。那我该怎么办呢?这是我目前的做法。它应该显示歌曲名称,即使按下并返回应用程序,因为音乐一直在播放。

MediaControllerClass;

    @Override 
  public void setAnchorView(View view) {

     String text = getSongTitle();
     if (text!=null)
     {
         Log.d(this.getClass().getName(), text);
     TextView tvSongTitle = new TextView(getContext());
      tvSongTitle.setText(text);
      tvSongTitle.setTextSize(40.0f);
      FrameLayout.LayoutParams params = new        FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
      params.gravity = Gravity.TOP;
      addView(tvSongTitle, params);
     }
     super.setAnchorView(view);
 }

  public String getSongTitle()
  {

      main = new MainActivity();
      return main.getSongTitle();
  }

内部活动类:

  public String getSongTitle()
{
    Log.d(this.getClass().getName(), "getsongtitle");

    Intent i = getIntent();
    if (i!=null)
    {
    String songTitle = i.getStringExtra("songName");
    if(songTitle!=null)
    {
        Log.d(this.getClass().getName(),songTitle );
        return songTitle;
    }
    else
    {
return null;
    }
    }
    else
    {
        return null;
    }

}

服务类:

    Intent i = new Intent(MusicService.this,MainActivity.class);
i.putExtra("songName",songTitle);
startActivity(i);

1 个答案:

答案 0 :(得分:0)

设置TextView后添加AnchorViewsetAnchorView将删除之前添加的所有观看次数。

最佳方法是创建自定义TextView布局并在设置AnchorView时添加布局,然后在选择歌曲时更改TextView文字

仅使用TextView的自定义布局

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/songTitleView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"/>

然后,覆盖自定义控制器类中的setAnchorView

@Override
public void setAnchorView(View view) {
    super.setAnchorView(view);
    View customView = View.inflate(getContext(),R.layout.song_title_view, null);
    TextView tvSongTitle = (TextView) customView.findViewById(R.id.songTitleView);
    tvSongTitle.setText("set your song title");
    addView(customView);
}

添加一种方法来更改自定义控制器中的标题

public void setSongTitle(String name){
    TextView tvSongTitle = (TextView) findViewById(R.id.songTitleView);
    tvSongTitle.setText(name);
}

用户选择歌曲时调用该方法

controller.setSongTitle("song name");