我有一个简单的应用程序,一旦按下按钮,TextView
中包含的HorizontalScrollView
就会更新。我希望这个TextView
水平居中,当文本扩展为水平滚动时,因为它太长,我必须将TextView
切换到左侧的重力,否则{{1}行为不正确,并在开头切断文本,最后有很多空白。这是我目前处理此问题的代码:
ScrollView
此代码主要是有效。我的//make horizontal scroll text center and work
final HorizontalScrollView toTextScrollView = (HorizontalScrollView)parentView.findViewById(R.id.horizScroll);
final TextView toNumber = (TextView)parentView.findViewById(R.id.toField);
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;
Toast.makeText(getActivity(), "Can scroll", Toast.LENGTH_LONG).show();
}
else
{
params.gravity=Gravity.CENTER;
Toast.makeText(getActivity(), "Cannot scroll", Toast.LENGTH_LONG).show();
}
toNumber.setLayoutParams(params);
}
});
函数正常工作,因为它可以正常更新canScroll()
,并且无法滚动。此外,只要Toast
可滚动,重力就会变为左,而当不可滚动时,重力会变为中心。 然而,这是一个“改变”迟到的。就像在视图变得可滚动时一样,ScrollView
报告“可滚动”但不会将Toast
的重力更改为左,直到添加另一个数字。此外,如果视图是可滚动的并且变为不可滚动,则TextView
正确地说明了这一点,但Toast
保持在左重力,但如果删除了另一个数字,意味着它仍然是不可滚动的,那么它正确更新中心引力。