以编程方式正确更新TextView的重力?

时间:2013-10-25 21:45:52

标签: android eclipse textview

我在TextView中包含HorizontalScrollView,我希望文本在不可滚动时居中,但是当它足够大以便可滚动时,我需要更改{的重力{1}}为TextView,否则Gravity.LEFT会显示文字错误,因为它会切断大部分文字,如果文字保持居中,最后会有空格。这是我目前处理此问题的代码:

HorizontalScrollView

我的函数//make horizontal scroll text center and work final HorizontalScrollView toTextScrollView = (HorizontalScrollView)parentView.findViewById(R.id.horizScroll); toTextScrollView.addOnLayoutChangeListener(new OnLayoutChangeListener(){ @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { //if scrollable, change toNumber layout_gravity to left, else keep it at center FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); if(canScroll(toTextScrollView)) params.gravity=Gravity.LEFT; else params.gravity=Gravity.CENTER; Toast.makeText(getActivity(), "Can scroll: " + canScroll(toTextScrollView), Toast.LENGTH_LONG).show(); toNumber.setLayoutParams(params); } }); 正常工作,因为它在Toast中正确更新,所以这不是问题。问题是,一旦布局设置,我觉得canScroll()需要“刷新”。这是因为当第一个数字添加到TextView使其可滚动时,Toast返回它现在可以滚动但重力仍然居中,因此当向左滚动时,数字的第一部分被剪切,就像这样:

enter image description here

然而,每当添加下一个数字时,它会正确更新,重力设置为Gravity.LEFT,因此在滚动视图中没有任何文本被截断。如何正确更新TextView引力,以便它立即发生?

1 个答案:

答案 0 :(得分:0)

更改textview的重力后,请尝试调用 view.invalidate