实现类似菜单点菜。

textView可拖动,多选实时选择。

####1、界面设计

checkbox 多选点菜模拟_xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.lumeng.myapplication.MainActivity">


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:id="@+id/layout_one"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:orientation="horizontal">


        <CheckBox
            android:id="@+id/jianjiao"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="25dp"
            android:textSize="20dp"
            android:text="@string/jianjiao" />

        <ImageView
            android:id="@+id/jianjiao_p"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:background="@drawable/one" />

        <CheckBox
            android:id="@+id/zhengjiao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="100dp"
            android:layout_gravity="center"
            android:textSize="20dp"
            android:text="@string/zhengjiao" />

        <ImageView
            android:id="@+id/zhengjiao_p"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="10dp"
            android:layout_gravity="center"
            android:background="@drawable/two" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:layout_below="@+id/layout_one"
        android:orientation="horizontal">


        <CheckBox
            android:id="@+id/shuijiao"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="25dp"
            android:textSize="20dp"
            android:text="@string/shuijiao" />

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:background="@drawable/three" />

        <CheckBox
            android:id="@+id/sleep"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="100dp"
            android:layout_gravity="center"
            android:textSize="20dp"
            android:text="@string/sleep" />

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:background="@drawable/four" />
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/layout_yes"
        android:layout_marginTop="150dp"
        android:layout_gravity="center"
        android:orientation="horizontal">

        <Button
            android:id="@+id/bt_yes"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:text="@string/yes"
            android:textSize="40dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:id="@+id/lay"
        android:layout_below="@+id/layout_yes"
        android:layout_gravity="center"
        android:orientation="horizontal">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/text_id"
                android:textSize="30dp"/>
        </ScrollView>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_marginBottom="10dp"
        android:layout_below="@+id/lay"
        android:layout_gravity="center"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:id="@+id/one"
            android:layout_gravity="center"
            android:visibility="gone"
            android:background="@drawable/one" />
        <ImageView
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:id="@+id/two"
            android:layout_gravity="center"
            android:visibility="gone"
            android:background="@drawable/two" />
        <ImageView
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:id="@+id/three"
            android:layout_gravity="center"
            android:visibility="gone"
            android:background="@drawable/three" />
        <ImageView
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:id="@+id/four"
            android:layout_gravity="center"
            android:visibility="gone"
            android:background="@drawable/four" />


    </LinearLayout>
</RelativeLayout>

####2、功能实现

checkbox 多选点菜模拟_checkbox_02

package com.example.lumeng.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
    Button bt_yes;
    TextView txv;
    CheckBox chk;
    String msg="";
    int items=0;
    int visible;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        bt_yes = (Button) findViewById(R.id.bt_yes);
        txv = (TextView) findViewById(R.id.text_id);

        bt_yes.setOnClickListener(this);

        //循环检查看checkBox是不是被选取
        int[] id={R.id.jianjiao,R.id.sleep,R.id.zhengjiao,R.id.shuijiao};
        for(int i:id){
            chk=(CheckBox) findViewById(i); //若被选取
            chk.setOnCheckedChangeListener(this);//注册监听选取状态是不是改变
        }
    }

    //用来存储已选取选项的集合对象,表示存放的是CompoundButton(CheckBox父类对象)
    ArrayList<CompoundButton> selected = new ArrayList<>();
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
        if(isChecked){
            selected.add(compoundButton);
            items++;
            visible=View.VISIBLE;
        } else {
            selected.remove(compoundButton);
            items--;
            visible=View.GONE;
        }

        switch (compoundButton.getId()){ //按选取选项的资源ID,决定要更改的Imageview
            case R.id.jianjiao:
                findViewById(R.id.one).setVisibility(visible);
                break;
            case R.id.sleep:
                findViewById(R.id.two).setVisibility(visible);
                break;
            case R.id.zhengjiao:
                findViewById(R.id.three).setVisibility(visible);
                break;
            case R.id.shuijiao:
                findViewById(R.id.four).setVisibility(visible);
                break;
            default:
                break;
        }

        for(CompoundButton chk:selected){
            msg+="\n"+chk.getText();//以循环将黄行字符以及选项文字附加到msg字符串后面
        }
        if(items>0){//有点餐
            msg="你点购的是:"+msg;
            txv.setText(msg);
            msg="";
        }else{
            msg="请点餐";
            txv.setText(msg);
        }
    }


    @Override
    public void onClick(View view) {
        Toast.makeText(this,"请稍候,订单已接收",Toast.LENGTH_LONG).show();
    }

}

文献参考:
android app开发入门 施威铭 编著

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。