在android中的imageview上拖放textview

时间:2012-07-24 07:31:45

标签: android

我尽力帮助在imageview中拖放textview

我的带框架布局的xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">

<ImageView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 

    android:scaleType="center"
    android:src="@drawable/golden_gate" />

<TextView
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="20dip"
    android:layout_gravity="center_horizontal|bottom"

    android:padding="12dip"

    android:background="#AA000000"
    android:textColor="#ffffffff"

    android:text="Golden Gate" />

</FrameLayout>

我尝试拖放文本如下所示我在这里使用线性布局文本拖动某些部分而不是图像

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
public class DragNDropActivity extends Activity {
        private View selected_item = null;
        private int offset_x = 0;
        private int offset_y = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ViewGroup vg = (ViewGroup)findViewById(R.id.vg);
        vg.setOnTouchListener(new View.OnTouchListener() {

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                                switch(event.getActionMasked())
                                {
                                        case MotionEvent.ACTION_MOVE:
                                                int x = (int)event.getX() - offset_x;
                                                int y = (int)event.getY() - offset_y;
                        int w = getWindowManager().getDefaultDisplay().getWidth() - 100;
                        int h = getWindowManager().getDefaultDisplay().getHeight() - 100;
                        if(x > w)
                            x = w;
                        if(y > h)
                            y = h;
                                         LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                                        new ViewGroup.MarginLayoutParams(
                                                        LinearLayout.LayoutParams.WRAP_CONTENT,
                                                        LinearLayout.LayoutParams.WRAP_CONTENT));
                                         lp.setMargins(x, y, 0, 0);
                                                selected_item.setLayoutParams(lp);
                                                break;
                                        default:
                                                break;
                                }
                                return true;
                        }
   });
      TextView img = (TextView)findViewById(R.id.img);
        img.setOnTouchListener(new View.OnTouchListener() {

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                                switch(event.getActionMasked())
                                {
                                        case MotionEvent.ACTION_DOWN:
                                                offset_x = (int)event.getX();
                                                offset_y = (int)event.getY();
                                                selected_item = v;
                                                break;
                                        default:
                                                break;
                                }

                                return false;
                        }
                });
    }
}

3 个答案:

答案 0 :(得分:0)

尝试使用框架布局,它应该找出你想要的东西。

答案 1 :(得分:0)

像这样使用 RelativeLayout 。注意:您可以将其放在ParentView

<RelativeLayout android:layout_width="100dp" android:id="@+id/photoframe" android:layout_height="320dp" android:layout_weight="1.0">
        <ImageView android:layout_height="fill_parent" android:scaleType="fitXY" android:id="@+id/framephoto" android:src="@drawable/icon" android:layout_width="fill_parent"></ImageView>
        <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:id="@+id/textView1" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="188dp"></TextView>
    </RelativeLayout>

在layout.xml中。通过使用相对,您可以将文字视图拖到图片上。

答案 2 :(得分:0)

请尝试这个......

  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">        
    <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/ic_launcher" android:scaleType="center" />
    <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#AA000000" android:textColor="#ffffffff" android:text="Golden Gate"/>
</FrameLayout>

我用我的日食检查了它。让我知道它是否有效。