使用以下布局(较大布局的一部分),容器布局的可见性将设置为“已消失”,直到单击按钮为止。在按钮上单击,如果container_ll不可见,则将其设置为visible,并将自定义视图添加到reminderViews_ll容器中。
正在添加视图,并且在按钮单击时可以看到container_ll视图。以下是单击按钮后各种视图的宽度和高度。
container_ll width 420, height 96.
lineDivider_view width 420, height 2 (as expected)
reminder_img width 36, height 36 (as expected, hdpi phone)
reminderViews_ll width 0, height 96 (argh)
<LinearLayout
android:id="@+id/container_ll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
>
<View style="@style/lineDivider_view" />
<ImageView
android:id="@+id/reminder_img"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_horizontal"
/>
<!-- Stick the actual Reminder TVs + Del buttons in here dynamically -->
<LinearLayout
android:id="@+id/reminderViews_ll"
android:orientation="vertical"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.0"
/>
</LinearLayout>
从这里开始,我有点不知所措。我正在考虑使布局无效,强制它在使视图可见后再次绘制,但这对我来说似乎没有用(看似),如果reminderViews_ll可以达到96的高度,那么它不会成为什么时候它的问题计算LinearLayout的尺寸。
我希望你喜欢和我写这个问题一样阅读这个问题。任何指针,一如既往地赞赏。
答案 0 :(得分:1)
您显示的数字对我来说是正确的。
容器宽度为420.设置为fill_parent或wrap_content的其他视图会占用所有空间(实际上更多)。然后,线性布局将剩余空间划分为任何加权视图。由于没有可分配的空间,因此您将获得零。
container_ll width 420
lineDivider_view - 420
reminder_img - 36
= -36
so this makes sense
reminderViews_ll width 0
根本没有空间给它。
为什么在水平视图中使用水平线分割器?
答案 1 :(得分:0)
啊,非常困惑:layout_width =“fill_parent”和layout_weight =“1.0”不起作用?
我的意思是,layout_width =“0dp”保证宽度为0,无论你放入什么,所以你永远不会做你想要的。如果您正在使用fill_parent并且它仍然无法正常工作,我会问您是否将自定义视图添加到正确的LinearLayout中,因为这确实应该可以正常工作。
答案 2 :(得分:0)
我看到您已为android:layout_width
设置reminderViews_ll
为0 dp,您必须更改此参数,如果您愿意,可能会动态更改此参数。我真的不明白为什么你把它设置为0 dp然后问为什么它的宽度为零。