0

我有一个简单的应用程序,一旦你按下一个按钮,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保持在左重力,但如果删除另一个数字,这意味着它仍然不可滚动,那么它会正确更新为重心。

4

0 回答 0