从右到左SnackBar

时间:2016-02-07 09:27:31

标签: android right-to-left android-snackbar

我想在 Design Support Library SnackBar 上显示带操作文字
我的语言是从右到左写的。那么我该如何改变SnackBar文本和动作方向呢?
这样的事情:

enter image description here

6 个答案:

答案 0 :(得分:10)

最后从答案和更多搜索中我找到了这个解决方案:

DialogBox(boolean autoHide, boolean modal)
DialogBox(boolean autoHide, boolean modal, DialogBox.Caption captionWidget)

将方向设置为从右到左:

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(); TextAction,因此您可以使用其他TextView方法。比如TextViewsetTypeface()等等。

设置文字的字体:

setTextSize()

设置动作字体:

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

答案 1 :(得分:4)

只需添加以下代码:

在应用程序标记下的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();

答案 2 :(得分:2)

你必须根据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);
    }  
} 

使用此repo作为参考,并为snackbar

实现此目的

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

答案 3 :(得分:2)

我根据这个参考设置小吃布局的自定义布局解决了这个问题。

customize snackBar's layout

答案 4 :(得分:0)

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

答案 5 :(得分:0)

只需要:

         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();