TextView引力不更新

时间:2013-10-28 03:33:37

标签: android eclipse textview

我在TextView中包含HorizontalScrollView,我希望文本在不可滚动时居中,但是当文本足够大以使其HorizontalScrollView容器可滚动时,我需要将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);
    }

});

我的函数canScroll()正常工作,因为它在Toast中正确更新,所以这不是问题。问题是,我觉得TextView需要"刷新"一旦调用了setLayoutParams()。这是因为当第一个数字添加到TextView使其可滚动时,Toast返回它现在可以滚动但重力仍然居中,因此当向左滚动时,数字的第一部分被剪切,就像这样:

enter image description here

然而,只要添加了下一个号码,它就会正确更新,重力设置为Gravity.LEFT,因此滚动条中没有任何文字被切断视图。如何正确更新TextView重力,以便它立即发生? 我尝试在setLayoutParams()之后立即添加toNumber.invalidate()和toTextScrollView.invalidate(),但它仍然无法按时更新。

以下是TextView

<HorizontalScrollView 
     android:id="@+id/horizScroll"
     android:layout_height="match_parent"
     android:layout_width="0dp"
     android:layout_weight="1"
     android:layout_gravity="center"
     >

     <TextView
    android:id="@+id/toField"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textSize="35sp"
    android:singleLine="true"
    android:textColor="@color/lightblue"
    android:layout_gravity="center"
    android:scrollHorizontally="true"
    android:focusable="true"
    android:freezesText="true"/>


</HorizontalScrollView>

1 个答案:

答案 0 :(得分:0)

相关问题