2014-01-22 199 views
0

我有一个自定义视图,我已经把一些TextView里面,我必须改变每个子视图的布局属性不同。我不会能够通过XML来改变TextView的财产,动态更改childView属性

这里是我的xml:

<com.squareup.timessquare.CalendarRowView 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:paddingBottom="@dimen/calendar_day_headers_paddingbottom"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/CalendarCell.DayHeader" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/CalendarCell.DayHeader" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/CalendarCell.DayHeader" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/CalendarCell.DayHeader" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/CalendarCell.DayHeader" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/CalendarCell.DayHeader" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/CalendarCell.DayHeader" 
      /> 
    </com.squareup.timessquare.CalendarRowView> 

以上是其中有8 TextView的定义我希望每个TextView的有不同宽度的XML文件,

和下面是针对Java代码...

public static MonthView create(ViewGroup parent, LayoutInflater inflater, 
     DateFormat weekdayNameFormat, Listener listener, Calendar today) 
    { 
    final MonthView view = (MonthView) inflater.inflate(R.layout.month, parent, false); 
    final int originalDayOfWeek = today.get(Calendar.DAY_OF_WEEK); 

    int firstDayOfWeek = today.getFirstDayOfWeek(); 
    final CalendarRowView headerRow = (CalendarRowView) view.grid.getChildAt(0); 
    for (int offset = 0; offset < 7; offset++) 
    { 
     today.set(Calendar.DAY_OF_WEEK, firstDayOfWeek + offset); 
     final TextView **textView** = (TextView) headerRow.getChildAt(offset); 
     textView.setText(weekdayNameFormat.format(today.getTime())); 
    } 
    today.set(Calendar.DAY_OF_WEEK, originalDayOfWeek); 
    view.listener = listener; 
    return view; 
    } 

回答

0

使用充气与XML限制你的布局,是什么在XML。

动态地更改布局属性,你必须动态创建布局为好, 例如:

CalendarRowView calenderViewGroup = new CalendarRowView(thisContext); 
int widthNeeded = 300; // in pixels 
TextView someTextView = new TextView(thisContext); 
someTextView.setText("this is my text"); 
someTextView.setWidth(widthNeeded); 
someTextView.setLayoutParams(new LayoutParams(
     LayoutParams.FILL_PARENT, 
     LayoutParams.WRAP_CONTENT)); 

calenderViewGroup.addView(someTextView); 

公共方法这里http://developer.android.com/reference/android/widget/TextView.html更多可用的方法。