拖放进行的LinearLayout的子视图 [英] Drag and drop for linearlayout's child views
问题描述
我有5个不同的子视图的布局,儿童意见RelativeLayout的用里面的子视图数,而且都不同。因此,我使用滚动像这根容器:
I have layout with 5 different child views, Child views are relativelayout with number of child views inside it, and all are different too. Hence i am using scrollview as root container like this:
<ScrollView android:layout_width="match_parent" android:layout_height="match_parent"
android:fillViewport="true" android:scrollbars="none">
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/home_page_scrollview_outer_layout">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_alignParentLeft="true"
android:background="@drawable/homescreen_yellow" >
<ImageButton android:id="@+id/hp_imgbtn_listA" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:src="@drawable/arrow_right">
</ImageButton>
<ListView
android:id="@+id/listA"
android:layout_below="@id/hp_txt_listA"
android:background="@color/home_page_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ListView>
</RelativeLayout>
<!-- List B layout -->
<RelativeLayout
android:layout_weight="1"
android:layout_marginRight="10dip"
android:background="@drawable/homescreen_cyan"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
<!-- List C layout -->
<RelativeLayout
android:layout_weight="1"
android:layout_marginRight="10dip"
android:background="@drawable/homescreen_purple"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
<!-- List D layout -->
<RelativeLayout
android:layout_weight="1"
android:layout_marginRight="10dip"
android:background="@drawable/homescreen_turqoise"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
<!-- List E layout -->
<RelativeLayout
android:layout_weight="1"
android:layout_marginRight="10dip"
android:background="@drawable/homescreen_turqoise"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
<LinearLayout>
</ScrollView>
我想有拖放效果的LinearLayout容器。不知道如何实现拖放进行的LinearLayout容器?我得到的工作榜样的ListView,我想了滚动它应该是一样的过,但滚动型可以包含在它里面只有一个子视图。
I want to have drag and drop effect LinearLayout container. Any idea how to achieve Drag and Drop for LinearLayout container? I got working example for ListView, I guess for scrollview it should be same too, but scrollview can contain only one child view inside it.
推荐答案
添加到您的onCreate:
Add this to your onCreate:
yourView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
drag(event, v);
return false;
}
});
和给你的活动之外的任何方法的类。
And this to your Activity Class outside any methods.
public void drag(MotionEvent event, View v)
{
RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) v.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_UP:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_DOWN:
{
v.setLayoutParams(params);
break;
}
}
这篇关于拖放进行的LinearLayout的子视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!