我正在寻找解决方案,如下图所示:
我需要在一个布局中有两个可调整大小的视图。
用户只需将分隔线移到顶部(scrolview b变高)或底部(scrolview a变高)。
什么是最好的解决方案,这给了这种行为?我知道我可以从scrollview扩展到overridepublic boolean onTouchEvent(MotionEvent ev)
和protected void onDraw(Canvas canvas)
,但可能有更简单的解决方案。我想避免计算移动的数学。谢谢你提供任何信息。
最佳答案
如果你想快速解决这个问题,我建议你使用Split Pane Layout。
用途:
<com.mobidevelop.spl.widget.SplitPaneLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:spl="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/splitPaneLayout"
android:layout_height="match_parent"
spl:splitterSize="12dp"
spl:orientation="vertical"
spl:splitterPosition="50%"
spl:splitterBackground="#781b23">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="" />
</ScrollView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:text=""/>
</ScrollView>
</com.mobidevelop.spl.widget.SplitPaneLayout>
我通过为纵向和横向模式创建两个xmls解决了您的问题。对于纵向模式,我通过添加
spl:orientation="vertical"
将面板的方向设置为垂直;对于lanscape模式,我通过添加spl:orientation="horizontal"
将面板的方向设置为水平。在做了这些之后,我得到了下面的样子。