Как установить выравнивание (вправо или влево) программно TextView? - PullRequest
0 голосов
/ 02 ноября 2019

Что я сделал не так при установке textview в следующей позиции?

- Linear Layout -

(слева) imageview -textview -------------------------------------------- (справа) imageview -textview


    parent.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
    parent.setOrientation(LinearLayout.HORIZONTAL);

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,convertDpToPixel(23));

    textView.setLayoutParams(params);
    icFeature.setLayoutParams(params);
    icFeature2.setLayoutParams(params);
    textView2.setLayoutParams(params);
    textView2.setGravity(Gravity.RIGHT);
    parent.addView(textView);
    parent.addView(icFeature);
    parent.addView(icFeature2);
    parent.addView(textView2);
    linearLayout.addView(parent);

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Вы устанавливаете собственный атрибут Gravity TextView, который управляет тем, как его текст отображается в его собственных пределах. Вместо этого вы хотите установить атрибут Gravity на LayoutParams:

https://developer.android.com/reference/android/widget/LinearLayout.LayoutParams#gravity

parent.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
parent.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, convertDpToPixel(23));
textView.setLayoutParams(params);

// Create new params for second view
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, convertDpToPixel(23));
params2.gravity = Gravity.RIGHT | Gravity.END; // Set gravity on layout params
textView2.setLayoutParams(params2);
// textView2.setGravity(Gravity.RIGHT); // Remove this

icFeature.setLayoutParams(params);
icFeature2.setLayoutParams(params);
parent.addView(textView);
parent.addView(icFeature);
parent.addView(icFeature2);
parent.addView(textView2);
linearLayout.addView(parent);

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

0 голосов
/ 02 ноября 2019

Дайте ниже попробовать. Это может быть полезно,

RelativeLayout.LayoutParams textViewLayoutParams = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

// add a rule to align to the left
textViewLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

//align right
textViewLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

// make sure the rule was applied
textView.setLayoutParams(textViewLayoutParams);
...