从右到左 SnackBar
Right To Left SnackBar
我想在 Design Support Library SnackBar 上显示带有 action 的 text。
我的语言是从右到左书写的。那么如何更改 SnackBar 文本和操作方向呢?
像这样:
您必须根据本地进行设置。 Android 支持此功能。
从Android API Level 17+开始,它原生支持RTL。要强制整个布局为 RTL,包括 ActionBar,请执行以下操作。
在应用程序标签下的 Android 清单中保留此
android:supportsRtl="true"
在 Utils 中定义这样的方法 class
@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);
}
}
使用这个 repo 作为参考并为 snackbar 实现它
我根据这个参考为小吃布局设置自定义布局解决了这个问题。
只需添加以下代码:
在应用程序标签下的 Android 清单中保留此
android:supportsRtl="true"
还有这个:
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();
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();
}
最终从答案和更多搜索中我找到了这个解决方案:
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);
只有你需要:
Snackbar snackbar=Snackbar.make(v, "آیا از حذف کامل این مورد مطمئن هستید؟", Snackbar.LENGTH_LONG)
.setAction("حذف", new View.OnClickListener() {
@Override
public void onClick(View v) {
//info@giran.ir
//09155336168
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
View snack = snackbar.getView();
snack.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}
snackbar.show();
我想在 Design Support Library SnackBar 上显示带有 action 的 text。
我的语言是从右到左书写的。那么如何更改 SnackBar 文本和操作方向呢?
像这样:
您必须根据本地进行设置。 Android 支持此功能。
从Android API Level 17+开始,它原生支持RTL。要强制整个布局为 RTL,包括 ActionBar,请执行以下操作。
在应用程序标签下的 Android 清单中保留此
android:supportsRtl="true"
在 Utils 中定义这样的方法 class
@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);
}
}
使用这个 repo 作为参考并为 snackbar 实现它
我根据这个参考为小吃布局设置自定义布局解决了这个问题。
只需添加以下代码:
在应用程序标签下的 Android 清单中保留此
android:supportsRtl="true"
还有这个:
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();
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();
}
最终从答案和更多搜索中我找到了这个解决方案:
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);
只有你需要:
Snackbar snackbar=Snackbar.make(v, "آیا از حذف کامل این مورد مطمئن هستید؟", Snackbar.LENGTH_LONG)
.setAction("حذف", new View.OnClickListener() {
@Override
public void onClick(View v) {
//info@giran.ir
//09155336168
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
View snack = snackbar.getView();
snack.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}
snackbar.show();