Справа налево SnackBar

Я хочу показать текст с действием в библиотеке поддержки дизайна SnackBar.
Мой язык написан вправо-влево. Итак, как я могу изменить текст и направление действий SnackBar?
Что-то вроде этого:

введите описание изображения здесь

Ответ 1

Наконец, из ответов и других запросов я нашел это решение:

Snackbar snackbar =
    Snackbar.make(view, "My right2left text", Snackbar.LENGTH_LONG)
            .setAction("Action", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                }
             });

Настроить направление справа налево:

ViewCompat.setLayoutDirection(snackbar.getView(),ViewCompat.LAYOUT_DIRECTION_RTL);

Не забудьте это для показа закуски:

snackbar.show();

UPDATE

Поскольку у вас есть Text и Action как TextView, вы можете использовать для них другие методы TextView. как setTypeface(), setTextSize() и так далее.

Установите шрифт для текста:

TextView text = snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
text.setTypeface(yourTypeface);

Установить шрифт для действия:

TextView action = snackbar.getView().findViewById(android.support.design.R.id.snackbar_action);
action.setTypeface(yourTypeface);

Ответ 2

просто добавьте эти коды:

В манифесте Android под тегом приложения храните это

Android: supportsRtl = "истина"

и это:

Snackbar snackbar = Snackbar.make(getView(), "Text", Snackbar.LENGTH_SHORT);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    TextView view1 = (TextView)snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
    view1.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}

snackbar.show();

Ответ 3

вы должны установить это на основе Local. Android поддерживает эту функцию.

От Android API Level 17+ он поддерживает RTL изначально. Чтобы заставить весь ваш макет быть RTL, включая ActionBar, выполните следующие действия.

В манифесте Android под тегом приложения храните это

android:supportsRtl="true"

определить способ, подобный этому в классе Utils

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public static void getRtlSupport() {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
    }  
} 

Используйте это репо в качестве ссылки и реализуйте это для закуски

https://github.com/semsamot/ActionBarRTLizer.git

Ответ 4

Я решил эту проблему, установив настраиваемый макет для компоновки закусок в соответствии с этим подтверждением.

настроить макет snackBar

Ответ 5

private void showSnackbar(String text, int Length, String Action, View.OnClickListener clickListener) {
    Snackbar snackbar = Snackbar.make(findViewById(R.id.coordinatorLayout), text, Length);
    View snack = snackbar.getView();
    snackbar.getView().setRotationY(180);
    snack.setBackgroundColor(getResources().getColor(R.color.DarkBlue));
    TextView snack_text = (TextView)snack.findViewById(android.support.design.R.id.snackbar_text);
    TextView snack_action = (TextView)snack.findViewById(android.support.design.R.id.snackbar_action);
    snack_text.setTypeface(tf);
    snack_action.setTypeface(tf);
    snack_action.setRotationY(180);
    snack_text.setRotationY(180);
    snackbar.setAction(Action, clickListener);
    snackbar.setActionTextColor(Color.parseColor("#00c4ff"));
    snackbar.show();
}