2

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;
                        }
                });
    }
}
4

3 に答える 3

0

フレームレイアウトを使用してみてください。必要なものがわかるはずです。

于 2012-07-24T07:34:34.860 に答える
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>

私は日食でそれをチェックしました.そして、それが機能しているかどうかを教えてください.

于 2012-07-24T13:38:51.180 に答える
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の中に。Relativeを使用すると、テキストビューを画像の上にドラッグできます。

于 2012-07-24T07:37:16.997 に答える