2017-04-13 86 views
0

我正在这个项目中,用户可以自定义他们自己的披萨。我想要完成的是,当用户放下披萨面团时,文本将显示在文本视图上。例如:当用户拖动ONION并将其放在披萨面团上时,textview将显示ONION。其他配料也一样。尽管我已经做到了,但它并不堆叠。就像,当我放弃了一个洋葱和PEPPERONI,TextView的推移android-如何在textview中只在一个textview中堆叠文本?

ONIONPEPPERONI

ONION 
PEPPERONI 

下面的代码。我不知道堆叠文本的正确术语,所以我不能很好地解释它。

公共类MainActivity扩展AppCompatActivity {

Button bCheese, bMoz, bOnion, bPatty, bPep, bGreenBell, bMush, bPine, bHam, bOlive, bBacon; 
TextView txt; 
ImageView image, image2, image3, image4, image5, image6, image7, image8, image9, image10, image11, image12; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    bCheese = (Button) findViewById(R.id.imageCheese); 
    bMoz = (Button) findViewById(R.id.imageMoz); 
    bOnion = (Button) findViewById(R.id.imageOnion); 
    bPatty = (Button) findViewById(R.id.imagePatty); 
    bPep = (Button) findViewById(R.id.imagePepperoni); 
    bGreenBell = (Button) findViewById(R.id.imageGreen); 
    bMush = (Button) findViewById(R.id.imageMush); 
    bPine = (Button) findViewById(R.id.imagePine); 
    bHam = (Button) findViewById(R.id.imageHam); 
    bOlive = (Button) findViewById(R.id.imageOlive); 
    bBacon = (Button) findViewById(R.id.imageBacon); 


    txt = (TextView) findViewById(R.id.textView); 
    image = (ImageView) findViewById(R.id.imageView); 
    image2 = (ImageView) findViewById(R.id.imageView2); 
    image3 = (ImageView) findViewById(R.id.imageView3); 
    image4 = (ImageView) findViewById(R.id.imageView4); 
    image5 = (ImageView) findViewById(R.id.imageView5); 
    image6 = (ImageView) findViewById(R.id.imageView6); 
    image7 = (ImageView) findViewById(R.id.imageView7); 
    image8 = (ImageView) findViewById(R.id.imageView8); 
    image9 = (ImageView) findViewById(R.id.imageView9); 
    image10 = (ImageView) findViewById(R.id.imageView10); 
    image11 = (ImageView) findViewById(R.id.imageView11); 
    image12 = (ImageView) findViewById(R.id.imageView12); 


    bCheese.setOnLongClickListener(longClickListener); 
    bMoz.setOnLongClickListener(longClickListener); 
    bOnion.setOnLongClickListener(longClickListener); 
    bPatty.setOnLongClickListener(longClickListener); 
    bPep.setOnLongClickListener(longClickListener); 
    bGreenBell.setOnLongClickListener(longClickListener); 
    bMush.setOnLongClickListener(longClickListener); 
    bPine.setOnLongClickListener(longClickListener); 
    bHam.setOnLongClickListener(longClickListener); 
    bOlive.setOnLongClickListener(longClickListener); 
    bBacon.setOnLongClickListener(longClickListener); 

    image.setOnDragListener(dragListener); 
} 

View.OnLongClickListener longClickListener = new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     ClipData data = ClipData.newPlainText("",""); 
     View.DragShadowBuilder myShadowBuilder = new View.DragShadowBuilder(v); 
     v.startDrag(data,myShadowBuilder,v,0); 
     return true; 
    } 
}; 

View.OnDragListener dragListener = new View.OnDragListener() { 
    @Override 
    public boolean onDrag(View v, DragEvent event) { 
     int dragEvent = event.getAction(); 

     final View view = (View) event.getLocalState(); 

     switch(dragEvent){ 
      case DragEvent.ACTION_DRAG_ENTERED: 

       if (view.getId() == R.id.imageCheese){ 
        image2.setImageResource(R.drawable.cheddarpic); 
       } 

       else if (view.getId() == R.id.imageMoz){ 
        image3.setImageResource(R.drawable.mozarellapic); 
       } 

       else if (view.getId() == R.id.imageOnion){ 
        image4.setImageResource(R.drawable.onionspic); 
       } 

       else if (view.getId() == R.id.imagePatty){ 
        image5.setImageResource(R.drawable.pattiespic); 
       } 

       else if (view.getId() == R.id.imagePepperoni){ 
        image6.setImageResource(R.drawable.pepperonipic); 
       } 

       else if (view.getId() == R.id.imageGreen){ 
        image7.setImageResource(R.drawable.greenbellpic); 
       } 

       else if (view.getId() == R.id.imageMush){ 
        image8.setImageResource(R.drawable.mushroomspic); 
       } 

       else if (view.getId() == R.id.imagePine){ 
        image9.setImageResource(R.drawable.pineapplespic); 
       } 

       else if (view.getId() == R.id.imageHam){ 
        image10.setImageResource(R.drawable.hampic); 
       } 

       else if (view.getId() == R.id.imageOlive){ 
        image11.setImageResource(R.drawable.olivespic); 
       } 

       else if (view.getId() == R.id.imageBacon){ 
        image12.setImageResource(R.drawable.baconpic); 
       } 

       Log.i("DRAG", "ACTION DRAG ENTERED"); 
       break; 
      case DragEvent.ACTION_DRAG_EXITED: 

       if (view.getId() == R.id.imageCheese){ 
        image2.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imageMoz){ 
        image3.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imageOnion){ 
        image4.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imagePatty){ 
        image5.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imagePepperoni){ 
        image6.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imageGreen){ 
        image7.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imageMush){ 
        image8.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imagePine){ 
        image9.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imageHam){ 
        image10.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imageOlive){ 
        image11.setImageResource(R.drawable.pizzadough); 
       } 

       else if (view.getId() == R.id.imageBacon){ 
        image12.setImageResource(R.drawable.pizzadough); 
       } 

       Log.i("DRAG", "ACTION DRAG EXITED"); 
       break; 
      case DragEvent.ACTION_DROP:    
       if (view.getId() == R.id.imageCheese){ 
        image2.setImageResource(R.drawable.cheddarpic); 
        txt.append("Cheddar Cheese"); 
       } 

       else if (view.getId() == R.id.imageMoz){ 
        image3.setImageResource(R.drawable.mozarellapic); 
        txt.append("Mozarella Cheese"); 
       } 

       else if (view.getId() == R.id.imageOnion){ 
        image4.setImageResource(R.drawable.onionspic); 
        txt.append("Onions"); 
       } 

       else if (view.getId() == R.id.imagePatty){ 
        image5.setImageResource(R.drawable.pattiespic); 
        txt.append("Patties"); 
       } 

       else if (view.getId() == R.id.imagePepperoni){ 
        image6.setImageResource(R.drawable.pepperonipic); 
        txt.append("Pepperoni"); 
       } 

       else if (view.getId() == R.id.imageGreen){ 
        image7.setImageResource(R.drawable.greenbellpic); 
        txt.append("Green Bell Peppers"); 
       } 

       else if (view.getId() == R.id.imageMush){ 
        image8.setImageResource(R.drawable.mushroomspic); 
        txt.append("Mushrooms"); 
       } 

       else if (view.getId() == R.id.imagePine){ 
        image9.setImageResource(R.drawable.pineapplespic); 
        txt.append("Pineapples"); 
       } 

       else if (view.getId() == R.id.imageHam){ 
        image10.setImageResource(R.drawable.hampic); 
        txt.append("Ham"); 
       } 

       else if (view.getId() == R.id.imageOlive){ 
        image11.setImageResource(R.drawable.olivespic); 
        txt.append("Olives"); 
       } 

       else if (view.getId() == R.id.imageBacon){ 
        image12.setImageResource(R.drawable.baconpic); 
        txt.append("Bacon"); 
       } 
       break; 
     } 

     return true; 
    } 
}; 

}

+0

请解释清楚 –

+0

此外,http://stackoverflow.com/questions/5382490/how-to-add-a-line-break-in-an-android-textview – codeMagic

+0

我可能在这里很愚蠢,但不txt.append(“\ nPEPPERONI”)的工作? – Damien

回答

0

在XML只使用与垂直方向的线布局和可见性设置为走了。因此,当他们拖动第一个文本视图时,只需将第二个文本视图的可见性设置为可见,并将文本设置为意大利辣香肠。我希望这有助于

<LinearLayout 
      android:layout_width="match_parent" 
      android:orientation="vertical" 
      android:layout_height="wrap_content"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:text="Onion" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:text="Pepperoni" 
       android:visibility="gone" 
       android:layout_height="wrap_content" /> 
     </LinearLayout> 
+0

这不会是动态的。我想会有2种以上的配料可供选择,并且在未来有更多的配料可供选择时,它们将不容易适应。 OP将文本放置在一个TextView中。不使用多个TextViews。 – codeMagic