需求:实现以下单双按钮对话框,隐藏取消按钮后确认按钮长度不可改变 。
遇到问题:
隐藏取消按钮后,确认按钮宽度占满了,这里用的权重分配,隐藏一个另一个当然占满了,但不满足需求。
解决方式:
1.给按钮 宽度wrap_content ,但按钮的字数不固定,会导致两个按钮宽度不相同(不可取);
2.将按钮的长度固定,会导致不同机型显示按钮占弹窗的比例不相同(不可取);
3.获取按钮占屏幕的比例,动态 设置按钮的宽度(未测试);
4.可以给父类设置weightSum 属性,子项layout_weight 总和等于父类weightSum ,这里按钮需要显示相同宽度,所以每个子项layout_weight 相同且和等于weightSum 即可。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_30"
android:layout_marginRight="@dimen/dp_30"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_40"
android:weightSum="1">
<TextView
android:id="@+id/esc"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:background="@drawable/shape_rect_r50_solid_f4f5fa"
android:gravity="center"
android:lines="1"
android:paddingTop="@dimen/dp_12"
android:paddingBottom="@dimen/dp_12"
android:text="取消"
android:textColor="#383A4A"
android:textSize="@dimen/text_size_13"
android:visibility="visible" />
<View
android:id="@+id/line_view"
android:layout_width="24dp"
android:layout_height="2dp" />
<TextView
android:id="@+id/go_renzhen"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:background="@drawable/bg_rec_r12_solid_383a4a"
android:gravity="center"
android:lines="1"
android:paddingTop="@dimen/dp_12"
android:paddingBottom="@dimen/dp_12"
android:text="确定"
android:textColor="@color/white_new"
android:textSize="@dimen/text_size_13" />
</LinearLayout>
理解:weightSum 设置总权重,子项设置 layout_weight后将不会改变,也就是说父总共 weightSum 为1 ,子1 分配0.5后,不管其他子项怎么改变,子1永远都是占0.5。最好 layout_weight总和不要大于weightSum ,否则显示异常。