Android中Toast样式及自定义Toast

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/toast_layout"

android:layout_width="200dip"

android:layout_height="fill_parent"

android:background="#f0f0f0"

android:orientation="vertical" >

<TextView

android:id="@+id/txt_Title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center|top"

android:text="@string/toast_text_1"

android:textColor="#ffffff"

android:textSize="20dip" >

</TextView>

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#999999"

android:orientation="horizontal" >

<ImageView

android:id="@+id/image_toast"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="10dip"

android:src="@drawable/icon_message_nub" >

</ImageView>

<TextView

android:id="@+id/txt_context"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center|right"

android:text="@string/toast_text_2"

android:textColor="#ffffff"

android:textSize="15dip" >

</TextView>

</LinearLayout>

</LinearLayout>

--------------------------Activity代码------------------------

public class ToastActivity extends Activity implements OnClickListener {

private Button style1btn;

private Button style2btn;

private Button style3btn;

private Button style4btn;

private Toast toast = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.test_main);

initViews();

initListeners();

}

private void initViews() {

style1btn = (Button) findViewById(R.id.style1_btn);

style2btn = (Button) findViewById(R.id.style2_btn);

style3btn = (Button) findViewById(R.id.style3_btn);

style4btn = (Button) findViewById(R.id.style4_btn);

}

private void initListeners() {

style1btn.setOnClickListener(this);

style2btn.setOnClickListener(this);

style3btn.setOnClickListener(this);

style4btn.setOnClickListener(this);

}

@Override

public void onClick(View v) {

AlertDialog.Builder builder;

AlertDialog dialog;

switch (v.getId()) {

case R.id.style1_btn:

Toast.makeText(ToastActivity.this, "系统默认的Toast样式", Toast.LENGTH_LONG).show();

break;

case R.id.style2_btn:

toast = Toast.makeText(ToastActivity.this, "改变Toast显示位置的样式", Toast.LENGTH_LONG);

/**设置显示位置为居中*/

toast.setGravity(Gravity.CENTER, 0, 0);

toast.show();

break;

case R.id.style3_btn:

toast = Toast.makeText(ToastActivity.this, "自定义带图片的Toast样式", Toast.LENGTH_LONG);

LayoutInflater inflater = getLayoutInflater();

/**自定义布局*/

View view = inflater.inflate(R.layout.my_custom_toast, (ViewGroup) findViewById(R.id.toast_layout));

toast = new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER, 0, 0);

toast.setDuration(Toast.LENGTH_LONG);

toast.setView(view);

toast.show();

break;

case R.id.style4_btn:

LayoutInflater inflater1 = getLayoutInflater();

View styleView = inflater1.inflate(R.layout.my_custom_toast, (ViewGroup) findViewById(R.id.toast_layout));

TextView tv = (TextView) styleView.findViewById(R.id.txt_context);

tv.setText("长时间显示的Toast就是自己定义的一个Dialog!");

builder = new AlertDialog.Builder(this);

builder.setView(styleView);

dialog = builder.create();

dialog.show();

break;

default:

break;

}

}

}

时间: 2024-10-01 07:50:28

Android中Toast样式及自定义Toast的相关文章

android中的样式主题和国际化

一.Android中的样式和主题     1.1样式     样式是作用在控件上的,它是一个包含一个或者多个view控件属性的集合.android style类似网页设计中的css设计思路,可以让设计和内容分离,方便继承.复用.重用     下面通过一个简单的案例演示自定义样式的用法,在该案例中,我们自定义一个样式,用于渲染Button控件的显示效果     在res/values/styles.xml文件中添加   <style name="bt_style_1"> &l

Android中使用ListView绘制自定义表格(2)

上回再写了<Android中使用ListView绘制自定义表格>后,很多人留言代码不全和没有数据样例.但因为项目原因,没法把源码全部贴上来.近两天,抽空简化了一下,做了一个例子. 效果图如 一.功能: 1.支持列合并 2.考虑了界面刷新优化 3.预留部分接口 4.支持左右滚动 1.枚举类:CellTypeEnum package csdn.danielinbiti.custometableview.item; public enum CellTypeEnum { STRING //字符 ,DI

Android中使用ListView绘制自定义表格(3)

把自定义表格又改进了一下,可以支持行合并.表格分为简单和复杂两种模式 1.简单模式就是<Android中使用ListView绘制自定义表格(2)>描述的方式.不支持行合并 2.复杂模式支持行列合并 1.基于上回上传的代码,改动文件如下 package csdn.danielinbiti.custometableview.item; public class ItemCell { private String cellValue = "";//单元格的值 private in

Android中如何自己定义吐司(Toast)

Android系统里面有个东西很好用,也很常用,那就是Toast,但是长期使用也会发现,Toast有他的不足之处:形式单一,只有文字,风格不变等等,那么要如何自定义一个Toast呢,我们可以先从分析Android定义Toast的代码着手: Toast的makeText方法: 这里实际上Android所做的工作是将Toast显示的文本和持续时间设置了一下,然后返回了Toast对象,用以执行show()方法.这里核心的地方是要弄明白 这一句Android做了一些什么工作,下面我们继续看: 这里实际上

Android中通过反射来设置Toast的显示时间

这个Toast的显示在Android中的用途还是非常大的,同一时候我们也知道toast显示的时间是不可控的.我们仅仅能改动他的显示样式和显示的位置,尽管他提供了一个显示时间的设置方法.可是那是没有效果的(后面会说到).他有两个静态的常量Toast.SHORT和Toast.LONG,这个在后面我会在源码中看到这个两个时间事实上是2.5s和3s. 那么我们假设真想控制toast的显示时间该怎么办呢?真的是无计可施了吗?天无绝人之路,并且Linux之父以前说过:遇到问题就去看那个操蛋的源码吧.!以下就

Android中的样式和主题(Styles and Themes)

样式(style),是为一个视图(View)或窗体(window)指定形状和格式的属性集.一个样式能够指定的属性包括高度.内边距.字体颜色.字体大小.背景颜色等等.样式被定义在一个XML资源文件中,跟设置布局的XML资源文件是分开的. Android中样式的设计哲学跟web设计中的CSS(层叠样式表)相似,就是想办法让设计和内容分隔开来. 例如,通过使用样式(style),你可以将下面的XML布局: <TextView android:layout_width="fill_parent&q

Android中ProgressBar样式

Android系统已经被各大厂商改的面目全非,各种系统组件在不同手机上显示的效果完全不同,现在要想在开发中想要保持统一的界面风格,必须全部修改系统组件的样式,现在我们需要修改系统默认的ProgressBar,就Android系统本身来说,不同的版本组件的样式也不同. 系统中ProgressBar样式 找到android-sdk目录下的platforms\android-15\data\res\values中的styles.xml,然后查找ProgressBar,可以发现 <style name=

Android中实现Bitmap在自定义View中的放大与拖动

一:基本实现思路 基于View类实现自定义View –MyImageView类.在使用View的Activity类中完成OnTouchListener接口,实现对自定义View的触摸事件监听 放大与拖动 基于单点触控实现Bitmap对象在View上的拖动.并且检测View的边缘,防止拖动过界.基于两个点触控实现Bitmap对象在View上的放大.并且检测放大倍数.基于Matrix对象实现对Bitmap在View上放大与平移变换 Bitmap对象在View中的更新与显示 通过重载onDraw方法,

Android中如何优雅地自定义一个View

Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到一些坑,我把自己遇到的一些问题和解决方法总结一下,希望对广大码友们有所帮助. 注意点① 用xml定义Layout时,Root element 最好使用merge 当我们需要继承一个布局比较复杂的ViewGroup(比较多的是LinearLayout.RelativeLayout)时,通常会用xml来写布局,然后在自定义的View类中inflate这个定义了layout的xml文件. 首先