Когда Android Textview рисовать многострочные строки, макет перерисовывается?

  1. Это код.

    RelativeLayout layout = new RelativeLayout(this);
    TextView title = new TextView(this);
    title.setGravity(Gravity.CENTER);
    title.setWidth(320);
    title.setHeight(160)
    title.setText("hello");
    layout.addView(title);
    layout.setOnTouchListener(this);
    
  2. На экране, когда я перемещаю местоположение просмотра из (x:0, y:0) -> в (x: 200, y:300)

  3. И затем установите значение TextView

    title.setText("aaaaabbbbbbccccccdddddddeeeeeeeddddd");
    

    длина строки> ширина текстового представления, поэтому многострочный дисплей

  4. Затем произошла ошибка: "Расположение TextView вернулось к (x:0, y:0)"

    если TextView отображает SingleLine, например: title.setText("aaa"); расположение TextView (х: 200, у: 300)

Является ли Android TextView отображать многострочные строки, макет перерисован? кто-нибудь может мне помочь? Я волновался всю ночь!!!

PS: та же ошибка также происходит при вызове TextView.bringToFront ();

// В Android, если вы изменили расположение вида , необходимо установить параметры макета ; в противном случае , при перерисовке вида , вид вернется в положение (0,0)。

// решение таково:

                RelativeLayout.LayoutParams lpFeedback = new RelativeLayout.LayoutParams(  
                        RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);  
                lpFeedback.leftMargin = v.getLeft();  
                lpFeedback.topMargin = v.getTop();  
                lpFeedback.setMargins(v.getLeft(), v.getTop(), 0, 0);  
                v.setLayoutParams(lpFeedback);

1 ответ

Решение

Нет, такого не бывает, вот пример кода, попробуйте это:

RelativeLayout layout = new RelativeLayout(this);
        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
        );
        TextView title = new TextView(this);
        RelativeLayout.LayoutParams tvlp = new RelativeLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT
        );
        tvlp.setMargins(200,300,0,0);
        title.setLayoutParams(tvlp);

        title.setGravity(Gravity.CENTER);
        title.setTextColor(Color.WHITE);
        title.setBackgroundColor(Color.GREEN);
        title.setWidth(320);
        title.setHeight(160);
        title.setText("helloaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
        title.setTextSize(22);
        layout.addView(title);
        setContentView(layout, rlp);

Надеюсь, поможет!!!

Другие вопросы по тегам