0

我在 aTextView中包含 a HorizontalScrollView,并且我希望文本在不可滚动时居中,但是当它足够大可以滚动时,我需要将 的重力更改TextViewGravity.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);
    }

});

我的功能canScroll()正常工作,因为它在 Toast 中正确更新,所以这不是问题。问题是,一旦布局设置好,我觉得TextView需要“刷新”。这是因为当第一个数字添加到TextView使其可滚动时,Toast 返回它现在是可滚动的,但重力保持居中,因此当向左滚动时数字的第一部分被剪切,如下所示:

在此处输入图像描述

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

4

1 回答 1

0

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

于 2013-10-25T22:25:23.013 回答