我正在开发Android API v11。有一个很大的RelativeLayout区域(像一个画布),应该用编程方式填充一些按钮。每个按钮代表一个视频,我用VideoViewButton
扩展了android.widget.Button
类。以编程方式在旁边添加一个按钮
这里是我的主要活动现在在做什么:
private void addButtonForVideo(int videoId) {
Log.d(TAG, "Adding button for video " + videoId);
VideoButtonView button = new VideoButtonView(this, videoId);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout_napping);
layout.addView(button, params);
mVideoButtons.add(button);
}
这里,mVideoButtons
只是包含了所有的按钮,所以我可以在以后引用它们。
然而,按钮本身放置在RelativeLayout的左上角,一个在另一个之上。我需要做的是将每个按钮放在前一个的右侧,因此它们填满屏幕。
我试过了,我检查视频ID是不是0(意思是,一个按钮已经存在)。然后我得到先前放置的按钮的ID,并说,我想下一个按钮放置正确的前一个:
private void addButtonForVideo(int videoId) {
Log.d(TAG, "Adding button for video " + videoId);
VideoButtonView button = new VideoButtonView(this, videoId);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout_napping);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
// align to right of previous button
if (videoId != 0) {
VideoButtonView previousButton = mVideoButtons.get(videoId - 1);
params.addRule(RelativeLayout.RIGHT_OF, previousButton.getId());
}
layout.addView(button, params);
mVideoButtons.add(button);
}
但是,它不工作 - 按键仍然被置于彼此的顶部。我如何让他们在前一个旁边展示?
你可以显示你调用'setId'的'VideoButtonView'的构造函数吗?那么'mVideoButtons'的类型是什么? – Rajesh
@Rajesh Gotcha,我从来没有在构造函数中调用'setId'。从来没有想到这是必要的。你能把它作为答案发布吗? – slhck
按要求完成。 – Rajesh