2012-02-28 3 views
1

Я видел несколько сообщений об этом, но не нашел ответов на вопрос, который я испытываю. Я динамически заполняю LinearLayout в виджетах рабочего стола с представлениями RelativeLayout, но отображается только первое дочернее представление. Отладка показывает, что несколько видов создаются и добавляются, но они не отображаются. Вот код:Android RemoteViews addView только первый просмотр, показывающий

RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget); 
Cursor statuses_styles = getContentResolver().query(Uri.withAppendedPath(Statuses_styles.CONTENT_URI, widget), new String[]{...}, null, null, Statuses_styles.CREATED + " DESC LIMIT " + page + ",-1"); 
Log.d(TAG,"statuses count:"+statuses_styles.getCount()); 
if (statuses_styles.moveToFirst()) { 
    int count_status = 0; 
    views.removeAllViews(R.id.messages); 
    while (!statuses_styles.isAfterLast() && (count_status < 16)) { 
     RemoteViews itemView; 
     itemView = new RemoteViews(getPackageName(), R.layout.widget_item); 
     itemView.setTextViewText(R.id.message, statuses_styles.getString(1)); 
     itemView.setFloat(R.id.message, "setTextSize", friend_textsize); 
     Log.d(TAG,"add view:"+statuses_styles.getString(1)); 
     views.addView(R.id.messages, itemView); 
     count_status++; 
     statuses_styles.moveToNext(); 
    } 
} 
statuses_styles.close(); 
mgr.updateAppWidget(appWidgetId, views); 

Виджет - это просто LinearLayout с идентификатором «сообщений». Он установлен на fill_parent для ширины и высоты и имеет ориентацию, установленную на вертикальную.

Элемент виджета - это относительный макет, содержащий некоторые виды текста и изображения.

Виджет 4x4.

Любые идеи, почему ни одно из других представлений не появляется?

Спасибо!

ответ

1

Ребенок добавляемого вида имеет атрибут layout_alignParentBottom = "true", который заставляет его заполнять весь родитель, блокируя любые дополнительные дочерние элементы. Удаление атрибута позволило другим детям появиться.

0

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

Моя вина была, что я создал класс, расширяющий View LinearLayout, но не установить ориентацию на вертикальные внутреннюю часть XML, где я фактически использовал вид - так взгляды, где добавлены, но horiztonal.

Надеюсь, это поможет любому.