• Android 更改 Toast 的默认位置


    Android中Toast的默认位置在屏幕靠近底部的位置,这个默认位置有时候并不合适。比如页面上内容较少时,内容一般集中在屏幕上半部分,用户的注意力也集中在屏幕上半部分,默认位置的Toast用户可能没有注意到。还有可能是默认位置的Toast被用户的手挡住了。实践中感觉将Toast显示在屏幕的中部或中上部会比较好。如何修改Toast的默认位置呢?下面做一个简单的例子来演示一下。

    先上截图:

    布局文件activity_toast.xml代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:onClick="onClickDefaultToast"
            android:text="点击显示默认位置的Toast" />
    
        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:onClick="onClickCenterToast"
            android:text="点击显示居中位置的Toast" />
    
    
        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:onClick="onClickTopToast"
            android:text="点击显示居中上部位置的Toast" />
    
    </LinearLayout>

    后台ToastActivity.java代码如下:

    package chengyujia.demo.aty;
    
    import android.os.Bundle;
    import android.view.Display;
    import android.view.Gravity;
    import android.view.View;
    import android.widget.Toast;
    import chengyujia.demo.R;
    
    public class ToastActivity extends BaseActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_toast);
        }
    
        public void onClickDefaultToast(View v) {
            Toast.makeText(this, "默认位置的Toast", Toast.LENGTH_LONG).show();
        }
    
        public void onClickCenterToast(View v) {
            Toast toast = Toast.makeText(this, "居中位置的Toast", Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
        }
    
        public void onClickTopToast(View v) {
            Display display = getWindowManager().getDefaultDisplay();
            // 获取屏幕高度
            int height = display.getHeight();
            Toast toast = Toast.makeText(this, "居中上部位置的Toast", Toast.LENGTH_LONG);
            // 这里给了一个1/4屏幕高度的y轴偏移量
            toast.setGravity(Gravity.TOP, 0, height / 4);
            toast.show();
        }
    }
  • 相关阅读:
    java中<> 的用法
    Java 中 compareTo方法问题
    class AClass<E extends Comparable>与class AClass<E extends Comaprable<E>>有什么区别?
    zookeeper常用命令
    Storm概念讲解和工作原理介绍
    Storm集群安装部署步骤【详细版】
    Error contacting service. It is probably not running.
    Exception in thread "main" expected '<document start>', but found BlockMappingStart in 'reader', line 23, column 2: nimbus.host: "master"
    zookeeper 启动失败 BindException: Address already in use 或者Error contacting service. It is probably not running
    scss的安装使用
  • 原文地址:https://www.cnblogs.com/chengyujia/p/5035499.html
Copyright © 2020-2023  润新知