Android 自定义文本视图轻微移动

Android 自定义文本视图轻微移动,android,Android,我有一个文本视图,位于RelativeLayout中,由于某种原因,它会稍微向左移动,然后返回到其原始位置。它只发生了一小部分秒,但它是明显的和恼人的。这似乎也是随机发生的 我不知道那是什么,但几乎什么都试过了 它大约每200毫秒更新一个新字符,并在onDraw()方法上绘制线条 private Handler mHandler = new Handler(); private LinesView methodView; @Override public View onCreateView(L

我有一个
文本视图
,位于
RelativeLayout
中,由于某种原因,它会稍微向左移动,然后返回到其原始位置。它只发生了一小部分秒,但它是明显的和恼人的。这似乎也是随机发生的

我不知道那是什么,但几乎什么都试过了

它大约每200毫秒更新一个新字符,并在
onDraw()方法上绘制线条

private Handler mHandler = new Handler();
private LinesView methodView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){

    ................

    //Set up TextView to display the method
    methodView = (LinesView) v.findViewById(R.id.MC_title);
    methodView.setNumberOfBells(method.getPlayingOn());
    methodView.setTextSize(24);
    methodView.setTypeface(Typeface.MONOSPACE);
    methodView.setText("           ");
    methodView.setTextColor(Color.BLACK);
    methodView.setBackgroundColor(Color.WHITE);
    methodView.setClickable(false);


    .....................

    public class DisplayMethod extends AsyncTask<Void,Void,Void>{


    @Override
    protected synchronized Void doInBackground(Void... arg0) {
           ...........................
     mHandler.post(new Runnable() {
            @Override
            public void run() {

                methodView.clearText();

                //Ensures the view draws the lines
                methodView.drawLines(true);

                //Sets which bell the user is playing
                methodView.setBell(bellNumberTextViews.get(bellNumberTextViews.size() - 1).getText().toString());


            }
        }); 

           ........................

     //Displays the correct amount of text on screen
    methodView.setLimitingText(method.getPlayingOn(), cText, 6); 


    .........................
        }
  }
}

下面是xml布局

 <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="160dp" >

    <project.android.bellringing.views.LinesView
        android:id="@+id/MC_title"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"/>

 </RelativeLayout>

我认为这里的问题是您的
文本视图的宽度是
wrap\u content
。这意味着它将根据其内容进行拉伸/收缩。如果您说每隔200毫秒您的
TextView
就会更新一次,那么可能有一段时间它必须进行装配操作

这就是我要做的:

  • layout\u width
    更改为
    match\u parent
    ,然后查看发生这种情况的原因
  • 200
    毫秒(0.2秒)是查看实际发生情况的非常短的时间。尝试将其设置为更大的延迟(比如5000毫秒),看看是否可以区分它发生的原因
  • 如果没有,请尝试使用调试器,并逐步查看是什么真正使您的
    TextView
    调整了大小

您能否粘贴该
文本视图的布局,以及
相对视图
 <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="160dp" >

    <project.android.bellringing.views.LinesView
        android:id="@+id/MC_title"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"/>

 </RelativeLayout>