Как использовать атрибут Gravity внутри любого TextView в LinearLayout

Не могли бы вы объяснить мне, почему мой TextView не работает с гравитацией влево.

введите здесь описание изображения

О: LinearLayout | ориентация = ГОРИЗОНТАЛЬНО | сила тяжести A = вверху, в центре или внизу.

Б: Линейный макет | ориентация=ВЕРТИКАЛЬ | гравитация B = слева, по центру или справа.

C: текстовый вид

i us:

A.setGravity (гравитация А);

B.setGravity (гравитация B);

Плотность результата:

  • топ | слева: не работает (= вверху по центру)

  • центр | слева: не работает (= центр по центру)

  • дно | слева: не работает (= внизу по центру)

  • топ | центр: работа

  • центр | центр: работа

  • дно | центр: работа

  • топ | правильно: работа

  • центр | правильно: работа

  • дно | правильно: работа

        LinearLayout parent = new LinearLayout(mContext);
    
    LinearLayout framelayoutTitle = new LinearLayout(mContext);
    framelayoutTitle.setOrientation(LinearLayout.HORIZONTAL);
    framelayoutTitle.setGravity(vGravityTitle);
    
    LinearLayout layoutTitle = new LinearLayout(mContext);
    layoutTitle.setOrientation(LinearLayout.VERTICAL);
    layoutTitle.setGravity(hGravityTitle);
    
    holder.textTitle = new TextView(mContext);
    layoutTitle.setLayoutParams( new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    
    
    framelayoutTitle.setLayoutParams(new LinearLayout.LayoutParams((widthTitle * (width - dp2px(widthImageLV))) / 100, dp2px(heightTitle)));    
    
    
            holder.textTitle.setText(titleList.get(position));
            holder.textTitle.setGravity(alignmentTextTitle);
            holder.textTitle.setLayoutParams( new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            holder.textTitle.setTextSize(sizeTitle);
            holder.textTitle.setBackgroundColor(Color.WHITE);
    
    layoutTitle.addView(holder.textTitle);
    framelayoutTitle.addView(layoutTitle);
    
    parent.setOrientation(LinearLayout.HORIZONTAL);
    parent.setGravity(Gravity.TOP);
    parent.addView(framelayoutTitle);
    

person lachguer9    schedule 10.05.2018    source источник
comment
Вместо всех этих простых кодов XML было бы в 10 раз полезнее.   -  person Kunu    schedule 10.05.2018
comment
НЕТ, мне нужно переместить текстовое представление на все позиции внутри макета A. И я не использую XML, я использую программный код   -  person lachguer9    schedule 10.05.2018


Ответы (1)


Попробуйте это и задайте отступы и поля в соответствии с вашими потребностями.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView"
    android:text="A"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView2"
    android:text="b"
    android:layout_below="@+id/textView"
    />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView3"
    android:text="b"
    android:layout_below="@+id/textView2"
    android:layout_centerHorizontal="true"
    />

</RelativeLayout>
person Android Team    schedule 10.05.2018
comment
Я не знаю ваш XML-код. Если у него нет никакого представления о приведенном выше коде, пожалуйста, опубликуйте свой код, и я внесу изменения и передам его. - person Android Team; 10.05.2018
comment
НЕТ, мне нужно переместить текстовое представление на все позиции внутри макета A. И я не использую XML, я использую программный код - person lachguer9; 10.05.2018
comment
вы хотите, чтобы пользователь мог изменить положение текстового поля во время выполнения. это как анимация. - person Android Team; 10.05.2018
comment
не анимация, а просто может изменить положение textView: пример: если я setGravity вот так: A.setGravity(Gravity.TOP); B.setGravity(Гравитация.Слева); обычно у меня будет результат моего textView слева и сверху - person lachguer9; 10.05.2018
comment
предоставьте свой xml-код, тогда лучше поймите, что вы сделали. - person Android Team; 10.05.2018
comment
мой код работает хорошо, просто проблема с левой гравитацией. Я не могу иметь текстовое представление в левой позиции, потому что другая позиция работает. - person lachguer9; 10.05.2018
comment
я добавил простой код, который я использую внутри представления сетки адаптера - person lachguer9; 10.05.2018
comment
Хорошо, я нашел решение, у меня просто проблема с инициализацией моей переменной int: int hGravityTitle = 1; я изменил его на 3 // я не знаю, в чем проблема, но теперь это работает иначе if(alignment == 2) hGravityTitle = 5;//Gravity.RIGHT; иначе hGravityTitle = 1;//Gravity.CENTER_HORIZONTAL; } - person lachguer9; 10.05.2018