Я хочу отобразить текст с действием в SnackBar библиотеки поддержки дизайна.
Мой язык написан справа налево. Итак, как я могу изменить текст SnackBar и направление действия?
Примерно так:
Закусочная справа налево
Ответы (6)
Наконец, из ответов и других поисков я нашел это решение:
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();
ОБНОВЛЕНИЕ
Поскольку у вас есть 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);
просто добавьте эти коды:
В манифесте 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();
вы должны установить это на основе Local. Android поддерживает эту функцию.
Начиная с Android API уровня 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
Я решил эту проблему, установив пользовательский макет для макета закусок в соответствии с этой ссылкой.
Только вам нужно:
Snackbar snackbar=Snackbar.make(v, "آیا از حذف کامل این مورد مطمئن هستید؟", Snackbar.LENGTH_LONG)
.setAction("حذف", new View.OnClickListener() {
@Override
public void onClick(View v) {
//[email protected]
//09155336168
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
View snack = snackbar.getView();
snack.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}
snackbar.show();