zoukankan      html  css  js  c++  java
  • Android之自定义Toast

    Android系统默认的Toast十分简洁,使用也非常的简单。但是有时我们的程序使用默认的Toast时会和程序的整体风格不搭配,这个时候我们就需要自定义Toast,使其与我们的程序更加融合。

    使用自定义Toast,首先我们需要添加一个布局文件,该布局文件的结构和Activity使用的布局文件结构一致,在该布局文件中我们需设计我们Toast的布局,例如:

    <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/toast_layout_root"
         android:orientation="horizontal"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:padding="10dp"
         android:background="#DAAA"
         >
         <ImageView android:id="@+id/image"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="10dp"
                    />
         <TextView android:id="@+id/text"
                   android:layout_width="wrap_content"
                   android:layout_height="fill_parent"
                   android:textColor="#FFF"
                   />
     </LinearLayout>
    

      

    在这个地方要注意,我们给LinearLayout添加的id属性,在后面的代码中我们需要使用到。在程序中,我们可以通过如下代码创建我们自己的Toast:

    public class MainActivity extends Activity
     {
         private Button btn;
     
         @Override
         public void onCreate(Bundle savedInstanceState)
         {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);
             btn = (Button) findViewById(R.id.btn);
             btn.setOnClickListener(new OnClickListener()
             {
                 @Override
                 public void onClick(View v)
                 {
                     //获取LayoutInflater对象,该对象能把XML文件转换为与之一直的View对象
                     LayoutInflater inflater = getLayoutInflater();
                     //根据指定的布局文件创建一个具有层级关系的View对象
                     //第二个参数为View对象的根节点,即LinearLayout的ID
                     View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root));
                     
                     //查找ImageView控件
                     //注意是在layout中查找
                     ImageView image = (ImageView) layout.findViewById(R.id.image);
                     image.setImageResource(R.drawable.head);
                     TextView text = (TextView) layout.findViewById(R.id.text);
                     text.setText("自定义Toast演示程序");
     
                     Toast toast = new Toast(getApplicationContext());
                     //设置Toast的位置
                     toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                     toast.setDuration(Toast.LENGTH_LONG);
                     //让Toast显示为我们自定义的样子
                     toast.setView(layout);
                     toast.show();
                 }
             });
         }
     }
    

      

    运行效果:

  • 相关阅读:
    LeetCode 382. Linked List Random Node
    LeetCode 398. Random Pick Index
    LeetCode 1002. Find Common Characters
    LeetCode 498. Diagonal Traverse
    LeetCode 825. Friends Of Appropriate Ages
    LeetCode 824. Goat Latin
    LeetCode 896. Monotonic Array
    LeetCode 987. Vertical Order Traversal of a Binary Tree
    LeetCode 689. Maximum Sum of 3 Non-Overlapping Subarrays
    LeetCode 636. Exclusive Time of Functions
  • 原文地址:https://www.cnblogs.com/loonggg/p/2853702.html
Copyright © 2011-2022 走看看