【发布时间】:2017-04-13 14:08:58
【问题描述】:
我正在这个项目中工作,用户可以定制自己的披萨。我想要完成的是当用户在比萨面团上放一个浇头时,文本视图上将显示一个文本。例如:当用户拖动一个 ONION 并将其放在披萨面团上时,文本视图将显示 ONION。其他浇头也是如此。我已经做到了,但它没有堆叠。就像,当我放下洋葱和意大利辣香肠时,文本视图会发生
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;
}
};
}
【问题讨论】:
-
请解释清楚
-
我在这里可能很愚蠢,但 txt.append("\nPEPPERONI") 不起作用?
-
你也确定你的 TextView 是多行的吗?
-
@Damien 我已经尝试过 txt.append 但还没有尝试过 \n。我会测试它。谢谢。
标签: android drag-and-drop textview