Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态更改childView属性_Android_Custom View - Fatal编程技术网

Android 动态更改childView属性

Android 动态更改childView属性,android,custom-view,Android,Custom View,我有一个自定义视图,我在其中放了一些TextView,我必须以不同的方式更改每个子视图的布局属性。我无法通过xml更改textview属性 以下是我的xml: <com.squareup.timessquare.CalendarRowView android:layout_width="200dp" android:layout_height="wrap_content" android:paddingBottom="@dimen/calen

我有一个自定义视图,我在其中放了一些TextView,我必须以不同的方式更改每个子视图的布局属性。我无法通过xml更改textview属性

以下是我的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>

上面是xml文件,其中定义了8个textview我希望每个textview具有不同的宽度

下面是它的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;
  }
public static MonthView create(视图组父视图、布局、充气机、,
DateFormat weekdayNameFormat、侦听器、日历(今天)
{
最终MonthView视图=(MonthView)充气器充气(R.layout.month,父项,false);
final int originalDayOfWeek=today.get(Calendar.DAY/u周);
int firstDayOfWeek=today.getFirstDayOfWeek();
最终CalendarRowView头错误=(CalendarRowView)view.grid.getChildAt(0);
对于(int offset=0;offset<7;offset++)
{
today.set(Calendar.DAY\u OF_WEEK,firstDayOfWeek+offset);
最终文本视图**文本视图**=(文本视图)headErrorw.getChildAt(偏移量);
textView.setText(weekdayNameFormat.format(today.getTime());
}
today.set(Calendar.DAY\u OF_WEEK,originalDayOfWeek);
view.listener=监听器;
返回视图;
}

将充气器与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);
有关更多可用方法,请参见此处的公共方法