2014-08-29 2 views
0

Я использую для реализации CustomAdapter для заполнения данных списка. И для каждого элемента я пытаюсь настроить layoutparams textview. Но layoutparams.gravity не работает в моем коде. Ниже приведен фрагмент кода, который я используюAndroid: параметр гравитации макета не показывает никакого эффекта

public View getView(int position, View convertView, ViewGroup parent) { 
     User user= getItem(position); 

     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false); 
     } 
     TextView tvName = (TextView) convertView.findViewById(R.id.userName); 
     tvName.setLayoutParams(getLayoutParams()); 
     tvName.setText(getStringFromXmlByName(user.getTitle())); 
     tvName.setGravity(Gravity.CENTER_HORIZONTAL); 
     tvName.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.background)); 

     return convertView; 
    } 

private LayoutParams getLayoutParams() { 

     LayoutParams layoutParams = new LayoutParams(convertDpIntoPixels(300), 
       LinearLayout.LayoutParams.WRAP_CONTENT); 
     layoutParams.gravity = Gravity.RIGHT; 
     return layoutParams; 

    } 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="10dp" > 

    <TextView 
     android:id="@+id/userName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:paddingLeft="10dp" 
     android:paddingRight="6dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</LinearLayout> 

Любое возможное решение этой проблемы?

ответ

0
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center_horizontal" 
android:padding="10dp" > 

<TextView 
    android:id="@+id/userName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="#ffffff" 
    android:paddingLeft="10dp" 
    android:paddingRight="6dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

+0

гравитация была установлена ​​динамически – LearningBasics

+0

u r, придающая гравитацию текстовый вид, а не макет лайнера, и ваш текст также может быть применен к wrap_content. Gravity не применяется на wrap_content –

1

Гравитация определяет, как содержимое View должен быть выложен внутри самой.

Layout Гравитация определяет, как View должен быть выложен в его родителей.

Что делает ваш код, так это то, что текст внутри TextView размещается в центре, горизонтально, внутри TextView, который обертывает его собственный контент. Поэтому, по существу, для гравитации нечего делать, поскольку границы TextView полностью обнимают текст.

То, что, как я подозреваю, вы пытаетесь сделать, - это центр TextView внутри родителя. Для этого необходимо либо установить тяжести на родителя в center_horizontal или установить layout_gravity из TextView к center_horizontal.

+0

Я понимаю эту вещь. , поэтому я указал, что тяжесть выплаты не работает! – LearningBasics

+0

Установите гравитацию в XML-файл макета, не нужно делать это в коде. Опубликовать снимок экрана. –

+0

layoutParams.gravity = Gravity.RIGHT; это линия, которая не работает по желанию. – LearningBasics

Смежные вопросы