我需要在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);
答案 0 :(得分:0)
设置TextView
后添加AnchorView
。 setAnchorView
将删除之前添加的所有观看次数。
最佳方法是创建自定义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");