【问题标题】:android - how to stack text in textview in only one textview? [duplicate]android - 如何仅在一个文本视图中堆叠文本视图中的文本? [复制]
【发布时间】: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


【解决方案1】:

在您的 xml 中,只需使用垂直方向的线性布局并将可见性设置为消失。因此,当他们拖动第一个 textview 时,只需将第二个 textview 的可见性设置为可见并将文本设置为意大利辣香肠。我希望这会有所帮助

<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>

【讨论】:

  • 这不会是动态的。我想浇头将有超过 2 种选择,并且当将来有更多浇头可用时,它不会轻易容纳。 OP 将文本放在一个 TextView 中。不使用多个 TextView。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多