我为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);
..
答案 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()
}
}