我需要创建具有ListView的LinearLayout。我用这段代码做了:
this.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
final ListView listView = (ListView) LayoutInflater.from(getContext()).inflate(R.layout.chat_timer_rollout, null);
addView(listView);
我的聊天计时器推出是:
<ListView
xmlns:a="http://schemas.android.com/apk/res/android"
a:layout_width="match_parent"
a:layout_height="wrap_content"
a:background="@color/white"
a:cacheColorHint="@color/white"
a:paddingBottom="12dp"
a:paddingTop="12dp">
创建后,我尝试在列表视图中添加项目,如下所示:
final ArrayAdapter<TimeInterval> adapter = new ArrayAdapter<>(getContext(),
R.layout.chat_timer_item,
R.id.timer_label, TimeInterval.INTERVALS);
listView.setAdapter(adapter);
聊天计时器项目包含代码:
<TextView
a:id="@+id/timer_label"
xmlns:a="http://schemas.android.com/apk/res/android"
a:layout_width="match_parent"
a:layout_height="wrap_content"
a:paddingBottom="11dp"
a:paddingLeft="@dimen/timer_label_margin_right"
a:paddingTop="11dp"
a:textColor="@color/primary_text"
a:textSize="@dimen/timer_text_size"/>
创建后我在屏幕上看到我的线性布局,但是当我点击项目时它有宽度wrap_content,不匹配父级?怎么解决?我试图为params match_parent充气设置一个更多的线性布局,但它没有帮助。谢谢!
答案 0 :(得分:1)
LayoutInflater#inflate()
方法中的第二个参数是膨胀布局的(可选)父View
。当您为父级传递null
时,Inflater不知道哪种类型的LayoutParams
是合适的,因此它使用默认ViewGroup.LayoutParams
,其中ViewGroup.WRAP_CONTENT
为LinearLayout
两个方面。
由于您发布的代码位于this
子类中,因此您可以将inflate()
作为View
调用中的第二个参数传递。此外,当您使用双参数方法提供父addView()
时,会自动将夸大的布局添加到其中,因此您不需要final ListView listView = (ListView) LayoutInflater.from(getContext())
.inflate(R.layout.chat_timer_rollout, this);
来电。
[DisplayFormat()]