我建议使用父视图在TextView中直接进行水平滚动:
<HorizontalScrollView android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:scrollHorizontally="true"
android:gravity="center|right"
android:text="123456789"/>
</HorizontalScrollView>
水平滚动效果很好,但是当内容比父主的宽度长时,内容会向右溢出:
-------
|123456|7
-------
然而,我正在研究一个包含数字的textview,因为数字通常与右边对齐,我需要将textview溢出到另一边。 (你必须向左滚动才能看到字符串的开头)。
------
1|4567|
------
我尝试了多种重力=“右”和宽度的组合,但我无法做到。如何将文本对齐并使其向左溢出?
编辑:
我尝试在用户输入时执行此操作:
calc.setText( newNumber );
HorizontalScrollView hsv = (HorizontalScrollView) findViewById(R.id.hsv);
hsv.scrollTo(hsv.getRight(), hsv.getTop());
每次用户输入一个数字时,它会向右滚动,但是最新的数字总是不在屏幕之外(就像它滚动一样,然后添加了数字)。
答案 0 :(得分:4)
受this启发
您可以创建自己的类来自HorizontalScrollView
public class RightAlignedHorizontalScrollView extends HorizontalScrollView {
public RightAlignedHorizontalScrollView(Context context) {
super(context);
}
public RightAlignedHorizontalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public RightAlignedHorizontalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
scrollTo(getChildAt(0).getMeasuredWidth(), 0);
}
}
我发布了一个完整的简单项目there
答案 1 :(得分:1)
<HorizontalScrollView
android:id="@+id/hsv1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:scrollHorizontally="true"
android:gravity="center|right"
android:text="123456789"/>
</HorizontalScrollView>
在HorizontalScrollView
中添加了idHorizontalScrollView hsv = (HorizontalScrollView) findViewById(R.id.hsv1);
hsv.scrollTo(hsv.getRight(), hsv.getTop());
这是未经测试的,因为我是在飞行中制作的。告诉我它是怎么回事。
答案 2 :(得分:1)
我认为你必须使用android:fillViewport="true"
属性进行滚动视图
Check This&amp; This
<ScrollView
android:fillViewport="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scrollView"/>
怀疑:滚动视图的容器布局在哪里?
答案 3 :(得分:1)
我测试了代码。所以有两种方法可以解决这个问题 第一个使用ScrollBars
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
HorizontalScrollView hsv = (HorizontalScrollView) findViewById(R.id.hsv1);
hsv.scrollTo(hsv.getRight(), hsv.getTop());
}
},100L);
第二个没有scrollBars
<TextView
android:ellipsize="start" //add this line
...
/>
答案 4 :(得分:0)
您是否尝试将ellipsize参数指定给textview?
android:singleLine="true"
android:ellipsize="start"
我希望这能解决你的问题。
要在未溢出时设置文本的重力,请尝试设置
android:gravity="center_vertical|right"
答案 5 :(得分:0)
试试这个,这样可以正常工作,当你在线程之间跳转时不会给你任何延迟
hor = (HorizontalScrollView) findViewById(R.id.horizontalScrollView1);
hor.postDelayed(new Runnable() {
public void run() {
hor.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
}
}, 1L);
答案 6 :(得分:0)