Android 在视图中添加视图
我正在尝试制作一个音乐播放器,我被这个问题困扰了大约一天 所以我正在做的是,我正在遵循一个教程。我们使用一个名为MediaController的类来控制媒体(如播放/暂停、进度条等) 现在我正在做的是尝试自己做同样的事情。也就是说,我是Android 在视图中添加视图,android,view,android-framelayout,Android,View,Android Framelayout,我正在尝试制作一个音乐播放器,我被这个问题困扰了大约一天 所以我正在做的是,我正在遵循一个教程。我们使用一个名为MediaController的类来控制媒体(如播放/暂停、进度条等) 现在我正在做的是尝试自己做同样的事情。也就是说,我是 我正在向一个类发送一个视图(在本例中为列表视图),该类将以编程方式 在这个视图中添加一个框架布局(这是我在android源代码中看到的) 框架布局使用以前制作的称为媒体控制器的xml 下面是一些代码 public void anchorToView(View v
public void anchorToView(View view){
mainView = view;
view.addOnLayoutChangeListener(layoutChangeListener);
frameParams = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
);
removeAllViews();
View v = makeControllerView();
}
private OnLayoutChangeListener layoutChangeListener = new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight,
int oldBottom) {
}
};
private View vDemo;
private ImageButton pauseButton;
public View makeControllerView(){
LayoutInflater inflater= (LayoutInflater) context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
vDemo = inflater.inflate(R.layout.media_controller, null);
pauseButton = (ImageButton) vDemo.findViewById(R.id.pause);
return vDemo;
}
您可以创建控制器视图,但在调用removeAllViews()后从不将其添加到父视图。您需要这样做:
mainView.addView(v); // V being your controller view returned from makeControllerView()
那么问题出在哪里呢?没有显示任何额外的内容(我指的是我制作的其他列表视图)。我尝试过,实际上没有视图添加视图的方法。尽管我仍在寻找更好的答案。但我从Devsil的回答中得到了线索。即使用视图组。addView方法仅适用于viewgroup类。因此使用该方法。但仍在等待更好的答案。如果您知道主视图是哪种类型的视图组(如果是),则可以将该视图强制转换为相应的视图。像这样((Linearlayout)mainView.addView(v);但我会从不同的活动中,以不同的观点使用这种方法。因此,view group.well强制转换到视图组并添加视图将有效,LinearLayout、RelativeLayout、FrameLayout等都从视图组扩展。