У меня есть простой вид:андроид поля не работает, когда динамически вставляя просмотры
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/contact_selected"
android:layout_marginTop="10dp"
android:layout_marginEnd="5dp"
android:orientation="horizontal"
android:padding="3dp">
<TextView
android:id="@+id/txt_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Billy Bob"
/>
</LinearLayout>
Когда я статический скопировать код LinearLayout в мой основной макет деятельности, поля, как ожидалось. Однако, когда я добавляю представление в основной макет активности динамически, поля игнорируются. Вот как я ввожу вид
LayoutInflater inflater = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.test, null);
TextView txt_title = (TextView)view.findViewById(R.id.txt_title);
txt_title.setText("DynamiC#1");
llayout.addView(view, llayout.getChildCount()-1);
View view2 = inflater.inflate(R.layout.test, null);
txt_title = (TextView)view2.findViewById(R.id.txt_title);
txt_title.setText("DynamiC#2");
llayout.addView(view2, llayout.getChildCount()-1);
Вот как это выглядит:
Контейнер в основной раскладке является LinearLayout, который является дочерним по отношению к HorizontalScrollView. Любое понимание очень ценится.
Спасибо, это чистое решение, и это мой предпочтительный способ сделать это. Обратите внимание, что если кто-то еще изучает этот материал, то, поскольку inflate (view, parent) раздувает представление INTO родителя (добавляется как последний ребенок), строка в моем тестовом коде, где я добавляю представление (т.е. llayout.addView()), вызывает ошибка, потому что представление уже вставлено. В моем случае мне нужно сохранить фиксированный вид в качестве последнего ребенка и вставить новых детей перед ним. Поэтому я удаляю свой последний вид перед инфляцией() и добавляю его обратно после раздувания(). Работает как шарм. –
@JohnWard на самом деле вам по-прежнему нужен addView, если вы используете «inflater.inflate (R.layout.test, linearLayout, false)» с этим последним булевым параметром. – Flyview