在我们学习到消息框的时候,入门的即使toast了,也叫土司,就是在手机连接WIFI断开的时候出现在手机底部居中的那一个小信息框:
这个消息只用到一条语句,在第一个按钮的点击响应函数里面:
这里就这几一个星座座右铭的小应用作为演示:
我的toast
好了,那么我们要怎么来做呢:
1)、首先自己写好几个按钮:
我呢就写了一个text和四个button,设置好其响应函数:
<TextView
android:id="@+id/tV_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学霸星座的座右铭"
android:textSize="30sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/btn_one"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/btn_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="魔蝎座"
android:onClick="oneToast"
android:textSize="30sp"
app:layout_constraintTop_toBottomOf="@id/tV_title"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/btn_two"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/btn_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="射手座"
android:onClick="twoToast"
android:textSize="30sp"
app:layout_constraintTop_toBottomOf="@id/btn_one"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/btn_three"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/btn_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="水瓶座"
android:onClick="threeToast"
android:textSize="30sp"
app:layout_constraintTop_toBottomOf="@id/btn_two"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/btn_four"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/btn_four"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="双鱼座"
android:onClick="fourToast"
android:textSize="30sp"
app:layout_constraintTop_toBottomOf="@id/btn_three"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="MissingConstraints" />
2)、在Main3Activity函数里面编写toast的代码:
public void oneToast(View view) {
Toast.makeText(this, "艰苦岁月总难长久,坚毅的人总会出头。", Toast.LENGTH_SHORT).show();
}
public void twoToast(View view) {
Toast toast = Toast.makeText(getApplicationContext(),"世上最重要的事,不在于我们在何处,而在于我们朝着什么方向走。",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP,0,200);
toast.show();
}
public void threeToast(View view) {
Toast toast = Toast.makeText(getApplicationContext(),"肉体是精神居住的花园,意志则是这个花园的园丁意志既能使肉体“贫瘠”下去,又能用勤劳使它“肥沃”起来。",Toast.LENGTH_SHORT);
ImageView myImage = new ImageView(getApplicationContext());
myImage.setImageResource(R.drawable.icon);
LinearLayout toastView = (LinearLayout)toast.getView();
toastView.setOrientation(LinearLayout.HORIZONTAL);
toastView.addView(myImage,0);
toast.show();
}
public void fourToast(View view) {
TextView myText = new TextView(getApplicationContext());
myText.setText("一个真实的人会像星星一样散发光芒");
Toast toast = Toast.makeText(getApplicationContext(),"",Toast.LENGTH_SHORT);
ImageView myImage = new ImageView(getApplicationContext());
myImage.setImageResource(R.drawable.icon);
LinearLayout toastView = (LinearLayout)toast.getView();
toastView.setOrientation(LinearLayout.HORIZONTAL);
toastView.addView(myImage,0);
toastView.addView(myText,1);
toast.show();
}
写一个简单的带图片的土司代码的思路:
·创建一个toast对象
·设置好toast的显示位置
·创建一个imageview并写好源文件
·获取toast对象的视图,并转换为Linearlayout布局,因为线性布局简单
·设置线性布局对象的排列方向为垂直
·将图片对象add进toast视图对象
·最好,toast.show();
Toast toast = Toast.makeText(getApplicationContext(),"你要显示的字符串",Toast.LENGTH_SHORT);
ImageView myImage = new ImageView(getApplicationContext());
myImage.setImageResource(R.drawable.icon);
LinearLayout toastView = (LinearLayout)toast.getView();
toastView.setOrientation(LinearLayout.HORIZONTAL);
toastView.addView(myImage,0);
toast.show();
3)、在写的过程中可能遇到一些奇奇怪怪的问题,大家可以通过查看日志信息来定位出问题的地方,
也就是这个框logcat ,下拉框可以选择日志类型,有错误、警告、和一般等;
倘若你通过排错没有发现逻辑问题和语法问题,可能会通过调试来找问题,这里会发现getView();的返回值是一个NULL,不用怀疑,这里默认的值,错误不在这里,我遇到过一个问题,就是点击按钮是就会闪退,编译器会说是getView()为NULL,说明是你的手机版本太高,这时候你就要换一个低版本的手机了,这是一个坑要注意!!!