Toast 自定义显示位置,toast和通讯录的a-z 一起走 部分代码

Toast的显示位置可以我们自己设置,通过如下命令:
toast = Toast.makeText(getContext(), "" + (char) ('A' + position),Toast.LENGTH_SHORT);
//可以控制toast显示的位置
toast.setGravity(Gravity.LEFT, xoffset, yoffset);
toast.show();

同时我们通过toast.cancle()可以用来取消一个toast,这在我们滑动到下一个字母的时候,就可以取消掉上一个字母的显示。
if(toast!=null)toast.cancel();


package com.zqxue.Review151222;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

/**  * Created by XUE on 2015/12/22.  */ public class SimpleView extends LinearLayout {
    private Paint paint;
    private float stopY;
    private Toast toast;

    public SimpleView(Context context) {
        super(context);
    }

    public SimpleView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context,attrs);

    }

    public void init(Context context,AttributeSet attrs){
        paint = new Paint();
        paint.setColor(Color.RED);

        for (int i = 0; i < 26; i++) {
            TextView textView = new TextView(context);
            String text = Character.toString((char)('A'+i));

            textView.setText(text);
            ViewGroup.LayoutParams layoutParams = new LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    0,
                    1
            );
            textView.setLayoutParams(layoutParams);

            //textSize
            int height = getHeight();
            int textSize = height/26-2;

            textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
            textView.setGravity(Gravity.RIGHT);
            addView(textView);
        }
    }

    private int currentPosition=-1;
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        boolean ret = false;
        int action = event.getAction();
        float ex = event.getX();
        float ey = event.getY();
        stopY=ey;
        int position = -1;
        String type = "";
        switch (action){
            case MotionEvent.ACTION_DOWN:
                type ="DOWN";
                currentPosition=-1;
                //toast  if(toast!=null)toast.cancel(); toast = Toast.makeText(getContext(), "" + (char) ('A' + position), Toast.LENGTH_SHORT); Log.d("151222MY","LONG="+Toast.LENGTH_LONG+" SHORT="+Toast.LENGTH_SHORT+ ex+""+ey); //可以控制toast显示的位置 //toast.setGravity(Gravity.LEFT, right + child.getWidth() + 200, bottom - getHeight() / 2); toast.setGravity(Gravity.LEFT, getWidth() - 150, (int) ey - getHeight() / 2); toast.show();
                ret=true;
                break;
            case MotionEvent.ACTION_MOVE:
                int childCount = getChildCount();
                for (int i = 0; i < childCount; i++) {
                    View child = getChildAt(i);
                    int top = child.getTop();
                    int left = child.getLeft();
                    int right = child.getRight();
                    int bottom = child.getBottom();
                    if(top<=ey&&left<=ex){
                        if(right>=ex&&bottom>=ey){
                            position = i;
                        }
                    }
                    if(position>-1&&currentPosition!=position){
                        Log.d("151222MY","click "+position);
                        Log.d("151222MY","click"+(char)('A'+position));
                        currentPosition=position;
                        if(toast!=null)toast.cancel(); toast = Toast.makeText(getContext(), "" + (char) ('A' + position), Toast.LENGTH_SHORT); Log.d("151222MY","LONG="+Toast.LENGTH_LONG+" SHORT="+Toast.LENGTH_SHORT); //可以控制toast显示的位置 //toast.setGravity(Gravity.LEFT, right + child.getWidth() + 200, bottom - getHeight() / 2); toast.setGravity(Gravity.LEFT, getWidth()-150, (int)ey - getHeight() / 2); toast.show();
                    }
                }
                type="MOVE";
                break;
            case MotionEvent.ACTION_UP:
                type="UP";
                break;
        }
        //Log.d("151222MY", type);

        return ret;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawLine(0, 0, 300, stopY, paint);
        Log.d("151222MY","onDraw");
    }
}

你可能感兴趣的:(android,toast自定义显示位置,toast显示位置,toast显示位置)