Я хотел бы программно добавить LinearLayout
некоторые TextViews
. И я хочу использовать LayoutInflater
. У меня есть в XML-файле макета активности:
<LinearLayout
android:id="@+id/linear_layout"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
/>
Я написал код активности, подобный приведенному ниже.
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TextView textView = (TextView) inflater.inflate(R.layout.scale, linearLayout, true);
textView.setText("Some text");
linearLayout.addView(textView);
Мой scale.xml
файл выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:drawableTop="@drawable/unit"
/>
В строке TextView textView = (TextView) inflater.inflate(R.layout.scale, linearLayout, true);
У меня есть фатальное исключение, подобное приведенному ниже.
java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package/my.package.MyActivity}:
java.lang.ClassCastException: android.widget.LinearLayout
Caused by: java.lang.ClassCastException: android.widget.LinearLayout
Когда я заменяю в проблемной строке linearLayout
на ноль, у меня нет никаких исключений, но android:layout_marginLeft
и android:layout_marginRight
из моего scale.xml
игнорируются, и я не вижу полей вокруг добавленного TextView.
Я нашел вопрос Android: ClassCastException при добавлении представления заголовка в ExpandableListView , но в моем случае у меня есть исключение в первой строке, в которой я использую инфлятор.