我有一个简单的应用程序,一旦你按下一个按钮,aTextView
中包含的 aHorizontalScrollView
就会更新。我希望它TextView
水平居中,并且当文本扩展为可水平滚动时,因为它太长了,我必须将其切换TextView
到左侧的重力,否则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
正确地说明这一点,但TextView
保持在左重力,但如果删除另一个数字,这意味着它仍然不可滚动,那么它会正确更新为重心。