我已经滚动了我自己的自定义视图,可以直接绘制到屏幕上,但我真正想做的是将屏幕的测量高度设置为1000px并让用户在Y轴上滚动,但我这样做有问题。有人可以帮忙吗?
以下是一些代码:
public class TestScreen extends Activity {
CustomDrawableView mCustomDrawableView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomDrawableView = new CustomDrawableView(this);
setContentView(mCustomDrawableView);
}
}
和
public class CustomDrawableView extends View {
public CustomDrawableView(Context context) {
super(context);
setVerticalScrollBarEnabled(true);
setMinimumHeight(1000);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawLine(...);
// more drawing
}
}
我试图通过调用super来覆盖scrollTo,scrollBy,awakenScrollBars等,但无济于事。我错过了一些愚蠢的事情,还是我犯了一些根本性的错误?
提前谢谢你,
马丁
增加:
我尝试将此作为自定义组件添加到下面的布局文件中,并将TestScreen
中的代码更改为使用setContentView(R.layout.exampleLayout)
指向正确的资源,但这会导致模拟器崩溃。我尝试将代码评论到最低限度但它仍然崩溃,所以我正在做的事情根本就是错误但是我不确定它是什么:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.martyn.testApp.CustomDrawableView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</ScrollView>
</LinearLayout>
答案 0 :(得分:16)
只需将您的视图放入ScrollView!
请注意,ScrollWiew应该是根节点 (这是你的LinearLayout)
答案 1 :(得分:6)
如果您希望整个活动成为ScrollView,请执行以下操作:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout android:id="@+id/scrollBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/string1" />
<TextView android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/string2" />
</LinearLayout>
</ScrollView>
然后使用此布局的活动可能如下所示:
public class ScrollingActivity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.scroll_layout);
}
}
这假设您的xml文件的名称是scroll_layout.xml。
答案 2 :(得分:4)
如果您想自己滚动,可以在覆盖自定义视图的onTouchEvent
方法时使用Scroller
和VelocityTracker
。为了帮助您实现它,我建议您查看这些类的Javadoc,并查看像NumberPicker一样滚动的android小部件实现。