2013-09-13 4 views
6

В моем проекте мне нужно динамически рисовать строки текстового представления в соответствии с полученными данными, чтобы показать его. Чтобы правильно их выровнять, я использовал Table Row n xml и назвал его в java-коде. Теперь, в их LayoutParam я дал MATCH_PARENT, но он обертывает текст в соответствии с длиной полученных данных. Теперь я хочу исправить ширину полей для табличного представления. Я делаю весь этот процесс в методе postExecute. В этом методе я использовал функцию setWidth, чтобы установить ее в соответствии с шириной элемента строки заголовка. Вот, Sno - это представление, а размер - массив, содержащий ширину всех элементов headerRow.set Ширина динамически textview

Sno.setTag(patient); 
Sno.setWidth(size[0]); 

Но это не решает эту проблему, когда я попытался GetWidth, чтобы увидеть его ширину, он показывал его значение 0. Тогда я попытался установить эту ширину, используя LinearLayout.LinearParams

LinearLayout.LayoutParams params_sno = new LinearLayout.LayoutParams(size[0], 
LinearLayout.LayoutParams.MATCH_PARENT); 
Sno.setLayoutParams(params_sno); 

но по-прежнему нет выгоды, secondaly, если я удалю MATCH_PARENT с ширины LayoutParams, его ширина увеличилась с ширины элемента строки заголовка. Поля без данных невидимы.

ответ

3

Попробуйте

TableRow row = new TableRow(activityContext); 

      TableLayout.LayoutParams td_tr = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

      row.setWeightSum(10); 
      row.setLayoutParams(td_tr); 
      row.setGravity(Gravity.CENTER); 
      row.setBackgroundColor(Color.parseColor("#D2D2D2")); 

      TextView tv= new TextView(activityContext); 
      tv.setText(String.valueOf(i)); 
      tv.setTextAppearance(activityContext, style.tvBoldRow); 
      tv.setLayoutParams(new TableRow.LayoutParams(0 , LayoutParams.WRAP_CONTENT, 1)); // Here you can set weight to your TextView. 
      tv.setPadding(2, 2, 2, 2); 
      tv.setGravity(Gravity.CENTER); 
      row.addView(tv); 
+0

Спасибо брату, он помог отобразить поле без каких-либо данных, но их ширина не такая же, как в поле строки заголовка – HimanshuR

+0

задана масса вашего текста в соответствии с вашим строка заголовка. и вы можете установить текст с помощью tv.setText («string»); @HimanshuR – Andrain

0

попробовать это:

 LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50); 
     tv.setLayoutParams(Params1); 
+0

я использовал его, как указано в вопросе – HimanshuR

+0

дают вес = 1 и ширину = «0dp» или «fill_parent» –

0

Добавьте следующий параметр

android:weight = "1"

в XML в TextView и установить

android:layout_width = "0dp".

Я думаю, что это должно сработать для вас.

Да, вы можете установить вес из кода Java.

Чтобы установить вес от кода Java:

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
          LayoutParams.MATCH_PARENT, 
          LayoutParams.MATCH_PARENT, 1.0f); 

Последний параметр является вес.

+0

но Я создаю textview только в Java-коде и используя идентификатор tablelayout из xml для размещения этих представлений, могу ли я назначить вес в java-коде, если да, то как – HimanshuR

+0

см. отредактированный ответ .. попробуйте – Shruti

+0

извините, но это не имеет никакого значения. – HimanshuR

0

Как ч.л. сказал

LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50); 

затем при добавлении его в макете таблицы вы перекрытая add METHODE, который принимает вид и макет Params.

Вы можете также рассмотреть TypedValue.applyDimention(), чтобы получить значения в DP

LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 15, objDeisplayMetrics),TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 50, objDeisplayMetrics)); 
Смежные вопросы