我刚刚学习了android开发,我遇到了一些让它工作的问题。
我有一个使用相对布局的活动。我需要它底部有2个按钮,然后在底部正上方,我希望我的自定义视图占据剩下的空间。
viewer.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<sketchViewer.AnimationPanelView
android:id="@+id/animationView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/homeFromViewerButton"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<Button
android:id="@+id/homeFromViewerButton"
android:layout_width="640dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Replay" />
<Button
android:id="@+id/replayButton"
android:layout_width="640dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Home" />
</RelativeLayout>
我遇到的问题是,当我运行程序时,我需要将一些参数传递给我的自定义视图构造函数,以便我的自定义视图决定它应该绘制什么。因此,在创建自定义视图(AnimationPanelView)的实例后,我不确定如何将此对象设置为我为视图提供的空间。
这是我的活动课程:
Viewer.java
public class Viewer extends Activity {
AnimationPanelView animationPanelView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewer);
animationPanelView = new AnimationPanelView(this, true /*, more parameters here */);
animationPanelView.setBackgroundColor(Color.GREEN);
RelativeLayout v = (RelativeLayout) findViewById(R.id.viewerLayout);
v.addView(animationPanelView);
}
现在,使用我的v.addView命令,视图将占据整个页面,覆盖底部的按钮。任何人都可以对此有所了解吗?我觉得自己很亲近,但我已经玩了一段时间了,我似乎陷入困境。
答案 0 :(得分:1)
查看实施自定义视图部分here。您需要覆盖onLayout和onMeasure,以便告诉您的容器有多大。
答案 1 :(得分:0)
您要在布局中添加另一个自定义视图,而不应该使用 animationPanelView =(AnimationPanelView)findViewById(R.id.animationView); animationPanelView.setBackgroundColor(Color.GREEN);