Crouton центрирует пользовательский вид и проблемы с исчезновением
Сегодня я сменил тост на крутон. Но у меня были следующие проблемы:
1) Показ гренки в центре
2) Всякий раз, когда я хочу отобразить новый Crouton, он снова отображает предыдущий Crouton, хотя предыдущий скрылся давно
Я хочу знать, есть ли лучший способ решить вышеуказанные проблемы? Потому что я посмотрел на образец и библиотеку, но не смог найти "
В настоящее время я решаю эти способы
макет деятельности:
<RelativeLayout
android:id="@+id/bigcontainer"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DilmancSRActivity"
tools:ignore="MergeRootFrame" />
<RelativeLayout
android:id="@+id/alternate_view_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
/>
</RelativeLayout>
Создание моего собственного тоста и его центрирование по горизонтали:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/kdrw"
android:orientation="horizontal"
android:padding="8dp" >
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginRight="8dp"
android:contentDescription="@string/strnull"
android:src="@drawable/logo" />
<TextView
android:id="@+id/toasttextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#000000" />
</LinearLayout>
</LinearLayout>
Показаны гренки:
LayoutInflater inflater = localdsr.getLayoutInflater();
View layout = inflater.inflate(R.layout.toast, null);
TextView text = (TextView) layout.findViewById(R.id.toasttextView1);
text.setText(info);
if (toast != null)
toast.cancel();
Configuration croutonConfiguration=new Configuration.Builder().setDuration(1500).build();
toast=Crouton.make(localdsr, layout ,R.id.alternate_view_group ,croutonConfiguration);
toast.show();
Для решения Второй я должен был загрузить исходный код библиотеки и использовать его. .Как я не хочу использовать анимацию во-первых, я отключил анимацию
//croutonView.startAnimation(crouton.getInAnimation());
вопрос об удалении функции, которая заставляла вещи появляться снова внутри protected void removeCrouton(Crouton crouton)
//sendMessageDelayed(crouton, Messages.DISPLAY_CROUTON, crouton.getOutAnimation().getDuration());
//I changed it with below .plus removed crouton.getOutAnimation().getDuration() so it does not throw exception
sendMessage(crouton, Messages.DISPLAY_CROUTON);
Я верю, что что-то упустил. Надеюсь, что уже есть правильный способ сделать это.
1 ответ
Вносить изменения в самой библиотеке не рекомендуется, так как это может создать проблемы, которые появляются только в вашей версии Crouton.
Вы можете изменить анимацию через Configuration.Builder.setInAnimation(...)
а также .setOutAnimation(...)
,
Configuration
может быть использован повторно и не должен создаваться каждый раз, когда вы хотите показать Crouton
, То же самое относится и к вашему View
, Это не должно быть надутым каждый раз.
Относительно дублирования отображения гренка: это поведение не предназначено. Приведенный выше код выглядит так, как будто он должен отображать Crouton с info
текстовый набор. Если твой info
текст изменился во время отображения Croutons, это может быть ошибка в библиотеке. Если это так, не стесняйтесь сообщить об этом.