2014-01-08 31 views
0

我現在正在執行拖動& drop relative_layout。我有一個擴展了Relativelayout的類。 當我將相對佈局拖到另一個佈局時,我想將相對佈局從編碼中自動放置到容器的中心(相對佈局),如(xml中的android:layout_centerInParent =「true」)。相對佈局父中心true

這是我的類擴展相對佈局:

public class Test extends RelativeLayout { 

    ImageView image2; 
    public RL(Context context){ 

     super(context); 

     TextView txtName= new TextView(context); 
     TextView bac_Number= new TextView(context); 
     ImageView image = new ImageView(context); 
     ImageView image1 = new ImageView (context); 
     ImageView image2 = new ImageView(context); 


     txtName.setText("First"); 
     // bac.setId(1); 

     txtName.setText("Aung Aung"); 
     image.setImageResource(R.drawable.fcb); 
     image1.setImageResource(R.drawable.upload); 
     image2.setImageResource(R.drawable.guest); 
     bac_Number.setText("8"); 

     RelativeLayout.LayoutParams lpSecond = new RelativeLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     addView(txtName, lpSecond); 

     RelativeLayout.LayoutParams lpFirst = new RelativeLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     //lpFirst.addRule(RelativeLayout.RIGHT_OF, second.getId()); 
     addView(bac_Number, lpFirst); 

     RelativeLayout.LayoutParams lpThird = new RelativeLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      addView(image, lpThird); 
    } 
} 

這是我上面的類

public class MainActivity extends Activity { 

    Button btn_Choose; 
    int p; 
    String[] series = {"Photo","Name","Back Number"}; 
    String[] series1 = {"myPhoto","GuestPhoto","Default"}; 
    GridLayout layoutmain; 


    private static final String IMAGEVIEW_TAG = "The Android Logo"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     RL r = new RL(this); 

     RL r1 = new RL(this); 
     RL r2 = new RL(this); 
     RL r3 = new RL(this); 
     RL r4 = new RL(this); 
     setContentView(R.layout.activity_main); 
     layoutmain = (GridLayout)findViewById(R.id.layoutmain); 
     layoutmain.addView(r); 
     r.setGravity(Gravity.CENTER); 
     layoutmain.addView(r1); 
     layoutmain.addView(r2); 
     layoutmain.addView(r3); 
     layoutmain.addView(r4); 
     btn_Choose = (Button)findViewById(R.id.btnselect); 

     r.setTag(IMAGEVIEW_TAG); 
     r1.setTag(IMAGEVIEW_TAG); 
     r2.setTag(IMAGEVIEW_TAG); 
     r3.setTag(IMAGEVIEW_TAG); 
     r4.setTag(IMAGEVIEW_TAG); 

     // myImage.setOnLongClickListener(new MyClickListener()); 
     r.setOnLongClickListener(new MyClickListener()); 
     r1.setOnLongClickListener(new MyClickListener()); 
     r2.setOnLongClickListener(new MyClickListener()); 
     r3.setOnLongClickListener(new MyClickListener()); 
     r4.setOnLongClickListener(new MyClickListener()); 

     findViewById(R.id.toplinear).setOnDragListener(new MyDragListener()); 
     findViewById(R.id.bottomlinear).setOnDragListener(new MyDragListener()); 
     findViewById(R.id.bottomlinear1).setOnDragListener(new MyDragListener()); 
     findViewById(R.id.layoutlinear).setOnDragListener(new MyDragListener()); 
     findViewById(R.id.layoutmain).setOnDragListener(new MyDragListener()); 
    } 

    private final class MyClickListener implements OnLongClickListener { 

     @Override 
     public boolean onLongClick(View view) { 
     // TODO Auto-generated method stub 

      ClipData.Item item = new ClipData.Item((CharSequence)view.getTag()); 

      String[] mimeTypes = { ClipDescription.MIMETYPE_TEXT_PLAIN }; 
      ClipData data = new ClipData(view.getTag().toString(), mimeTypes, item); 
      DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 

      view.startDrag(data, 
          shadowBuilder, 
          view, 
          0 
         ); 
      return true; 
     } 
    } 


    class MyDragListener implements OnDragListener { 
     Drawable normalShape = getResources().getDrawable(R.drawable.normal_shape); 
     Drawable targetShape = getResources().getDrawable(R.drawable.target_shape); 

     @Override 
     public boolean onDrag(View v, DragEvent event) { 

      switch (event.getAction()) { 

      case DragEvent.ACTION_DRAG_STARTED: 
        Toast.makeText(getApplicationContext(), "Start Drag ", Toast.LENGTH_LONG).show(); 
       break; 

      case DragEvent.ACTION_DRAG_ENTERED: 
       v.setBackground(targetShape); //change the shape of the view 
       break; 


      case DragEvent.ACTION_DRAG_EXITED: 
       v.setBackground(normalShape); //change the shape of the view back to normal 
       break; 

      case DragEvent.ACTION_DROP: 

       if(v.getClass().toString().equals("class android.widget.RelativeLayout")){ 
        Log.i("class","Relative"); 

         View view = (View) event.getLocalState(); 
         ViewGroup viewgroup = (ViewGroup) view.getParent(); 
         viewgroup.removeView(view); 

         RelativeLayout containView = (RelativeLayout) v; 
         containView.addView(view); 
         view.setVisibility(View.VISIBLE); 
        } 
       else { 

         Log.i("CLAss", v.getClass()+"Cant drop"); 
         View view = (View) event.getLocalState(); 
         view.setVisibility(View.VISIBLE); 
         Context context = getApplicationContext(); 
         Toast.makeText(context, "You can't drop the image here", 
               Toast.LENGTH_LONG).show(); 
         break; 
        } 
        break; 

      case DragEvent.ACTION_DRAG_ENDED: 
       v.setBackground(normalShape); //go back to normal shape 

      default: 
       break; 
      } 
      return true; 
     } 
    } 

    public void goClick(View v){ 
     if (v.getId() == R.id.btnselect){ 



      RotationPickerDialog dp = new RotationPickerDialog(this, series, new RotationPickerListener() { 

       @Override 
       public void OnDoneButton(Dialog rotationdialog, String r, int position) { 
        // TODO Auto-generated method stub 
        rotationdialog.dismiss(); 
        btn_Choose.setText(r); 
        p = position ; 

       } 
      }); 

      WindowManager.LayoutParams WMLP = dp.getWindow().getAttributes(); 

      WMLP.x = 100; 
      WMLP.y = 250; 

      dp.getWindow().setAttributes(WMLP); 
      dp.show(); 
      Log.i("p", p+""); 
      Toast.makeText(this, "Opponent Team Name", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

回答

1

稱爲活動您可以將規則添加到RelativeLayout.LayoutParams

RelativeLayout.LayoutParams lp=(RelativeLayout.LayoutParams)r.getLayoutParams(); 
lp.addRule(RelativeLayout.CENTER_IN_PARENT); 
+0

真的謝謝。有用 :) –

0

試試這個.....

Rl.setGravity(RelativeLayout.CENTER_IN_PARENT);