Установить ширину TextView в 0dp не работает - PullRequest
0 голосов
/ 16 октября 2011

Как программно установить ширину TextView равной 0dp?Я пытаюсь вставить в LinearLayout пару TextViews, но все они должны быть одинаковой ширины, и когда я добавляю xml, как

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
 >
 <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="left"
android:gravity="left"
                    />
 <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
        />
 <TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="test"
android:layout_gravity="right"
android:gravity="right"
        />
</LinearLayout>

, но когда в коде попробуйте, как

TextView txtTemp = new TextView(this);
txtTemp.setText(captures.get(i));
LinearLayout.LayoutParams tempLL = (LinearLayout.LayoutParams) txtTemp
                        .getLayoutParams();
tempLL.width =0;
tempLL.height = LinearLayout.LayoutParams.WRAP_CONTENT;
tempLL.weight = 1;

if (i == 0) {
    tempLL.gravity = Gravity.LEFT;
        }
if (i == (captures.size() - 1)) {
    tempLL.gravity = Gravity.RIGHT;
} else {
    tempLL.gravity = Gravity.CENTER;
                }
    txtTemp.setLayoutParams(tempLL);

, я получил исключениеисключение исключение tempLL.width.Как это решить?

1 Ответ

2 голосов
/ 16 октября 2011

Вместо использования

LinearLayout.LayoutParams tempLL = (LinearLayout.LayoutParams) txtTemp
                    .getLayoutParams();
            tempLL.width =0;
            tempLL.height = LinearLayout.LayoutParams.WRAP_CONTENT;
            tempLL.weight = 1;

попробуйте это

LinearLayout.LayoutParams tempLL = new LinearLayout.LayoutParams(0,
        LayoutParams.WRAP_CONTENT,1.0);
txtTemp.setLayoutParams(tempLL);

Вы создаете новое текстовое представление, и пока не заданы параметры макета.Так что getLayoutParams должен возвращать ноль.Поэтому создайте новый объект layoutparam и установите для него новое текстовое представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...