Таможенное Позиционирование Тоста - PullRequest
0 голосов
/ 04 марта 2012

Я создал собственное представление для своих сообщений тостов.

Я хочу, чтобы мои тостовые сообщения занимали всю ширину экрана с допустимыми полями 30dp слева и справа.

Но это заканчивается тем, что заполняет весь экран, если текст / содержимое сообщения 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 ]

1 голос
/ 04 марта 2012

Попробуйте это:

<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>
0 голосов
/ 05 апреля 2019

Вы также можете изменить тост по умолчанию, установив параметры гравитации

Это пример kotlin:

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()
    }
}
...