自定义吐司定位

时间:2012-03-04 10:07:20

标签: android android-layout toast

我为Toast Messages创建了一个自定义视图。

我希望我的toast消息占据屏幕的宽度,左右边距为30dp。

但是,如果Toast消息的文本/内容很长,它最终会填满整个屏幕。(如果内容较少,则会包含很多内容)。我希望它在宽度上保持相同的大小(即整个屏幕宽度减去左边和右边的边距),以及根据其内容包装(增加/减少)的高度。

这是我目前的Toast Xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_root"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/jtoast_bg"
    android:layout_gravity="center"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp">
<ImageView
     android:id="@+id/toast_image"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginRight="10dp"
     android:scaleType="fitStart"
     android:src="@drawable/menu_info">
</ImageView>
<TextView 
    android:id="@+id/toast_text"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:paddingLeft="10dp"
    android:textSize="14sp"
    android:gravity="center"
    android:text="toast text"
    android:textColor="#FFF">
 </TextView>

它正在填充为:

View layout = inflater.inflate(R.layout.jtoast,(ViewGroup)activity.findViewById(R.id.toast_root));
..
toast.setGravity(Gravity.BOTTOM, 40, 40);
..

2 个答案:

答案 0 :(得分:1)

试试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/toast_root"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:background="#990099"
          android:layout_gravity="center"
    >
<View
        android:layout_width="25dp"
        android:layout_height="fill_parent"
        />
<LinearLayout
        android:id="@+id/toast_root"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#999900"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:padding="5dp"
        >
    <ImageView
            android:id="@+id/toast_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:scaleType="fitStart"
            android:gravity="center"
            android:src="@android:drawable/ic_btn_search"
            >
    </ImageView>
    <TextView
            android:id="@+id/toast_text"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:paddingLeft="10dp"
            android:textSize="14sp"
            android:text="toast text"
            android:textColor="#FFF"
            android:layout_weight="1"
            android:gravity="center"
            android:background="#ff00"
            />
</LinearLayout>
<View
        android:layout_width="25dp"
        android:layout_height="fill_parent"
        />

</LinearLayout>

答案 1 :(得分:0)

您还可以通过设置重力参数来修改默认的吐司

这是科特林的例子:

fun showToast(context: Context, message: String, long: Boolean = false) {
    val duration: Int

    if (long) duration = Toast.LENGTH_LONG
    else duration = Toast.LENGTH_SHORT

    Toast.makeText(context, message, duration).apply {
        setGravity(Gravity.BOTTOM, 0, dp2px(76))
        show()
    }
}