2014-03-03 56 views
1

我已经在textview中编写了一些选取框的代码。阿拉伯语的Android选框

当我将语言从英语更改为阿拉伯语。

文本的方向将从右向左改变(原文是从左到右的英文),但是选取框的方向不会改变,它总是从右向左滚动。

我的代码如下

<TextView android:id="@+id/label" android:layout_width="@dimen/menu_item_txt_width" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center_horizontal" android:text="@string/empty" android:textColor="@drawable/menu_txt_color" android:textSize="@dimen/menu_item_txt_size" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" />

谁能给我提供简单的方法来解决这个问题?

在英文文本方向“移动到[888888888]” --->左至右 在阿拉伯语文字方向“[888888888]نقلالى”从右至左

但在帐篷,

在英文版本中,当我不能集中TextView的,它会显示“移至[88”,那么我重点会滚动显示“88888]” ----->从右到左

在阿拉伯语版本中,当我没有关注文本视图时,它会显示“88”نقلالى“,然后我将它聚焦将滚动并显示”نقل“----->从右到左

+0

要actully做什么? – rajshree

+0

@rajshree我认为OP希望从右到左的选取框效果。 – waqaslam

+0

使用此其可帮助:) http://stackoverflow.com/questions/6704080/how-to-reverse-the-direction-of-marquee-of-a-textview –

回答

-1

实现这个目标没有原生的方法,也就是说,没有内置的方法可以实现您想要的功能,但是有一种解决方法可以使其以这种方式工作。把你的TextView换成HorizontalScrollView,你需要用滚动条的位置控制它。首先,让这个滚动条的位置:

scrollPos = (int) tv.getLayout().getLineWidth(0); 

下一步是定义一个Handler,直到你达到滚动极限调用递归,这应该工作:

Handler hsHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
    // Being hsView your HorizontalScrollView 
    hsView.scrollTo(scrollPos, 0); 
    scrollPos--; 
    if (scrollPos >= 0) 
     hsHandler.sendEmptyMessage(0); 
    } 
}; 
+0

应该有一个评论没有回答你复制粘贴 –

+0

这不是一个复制和粘贴,这是我在多年前的一个项目中使用的解决方案,它仍然有效。我实际上是从我的项目中复制的。 – nKn

+0

亲爱的nKn, 感谢您的回复,我已经尝试过这段代码,但我总是在tv.getLayout()中得到NullPointerException。 \t user3374004