【问题标题】:RadioButton center drawable / layout flatteningRadioButton 中心可绘制/布局展平
【发布时间】:2016-04-12 10:36:37
【问题描述】:

我必须在我的布局上做一些扁平化,在它下面的部分之后。百分比TextViewRadioButton 位于左侧的同一位置,并且正在使用动画进行切换。第二个TextView 显示了一些符合宽度的文本。问题是RadioButtonTextView 短,但我使用alignLeftalignRight 获得相同的宽度,即使将重力设置为center 无线电可绘制对象也是左对齐。我找到了this topic,但在Material 之前有点旧,目前这个类更复杂。任何建议如何在没有自己的宽度(或百分比文本视图的宽度)的情况下将此收音机居中!添加另一个ViewGroup? (precent 和 radio 可能在另一个 RelativeLayout 并设置 centerInParent,就像我之前尝试扁平化一样)

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/option_percent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:singleLine="true"
        android:gravity="center"
        android:ems="3"
        android:visibility="invisible"/>
    <RadioButton
        android:id="@+id/option_radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_alignLeft="@id/option_percent"
        android:layout_alignRight="@id/option_percent"
        android:gravity="center"/>
    <TextView
        android:id="@+id/option_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/option_percent"/>
</RelativeLayout>

【问题讨论】:

  • 你试过在单选按钮中使用 marginLeft 吗?
  • 不,因为它没有居中RadioButton,只会移动。 radio Drawable 在不同的设备上具有不同的宽度。目前我唯一的想法是以编程方式测量TextView 的百分比,并为RadioButton 设置正确计算的marginLeft,寻找更简单的方法,也许只有xml。无论如何感谢您的建议:)

标签: android android-layout android-relativelayout android-radiobutton


【解决方案1】:

好的,我有一些解决方法。我不接受这篇文章,因为它不是一个正确的答案。我仍然指望另一种方式,更优雅;)

从上面的 xml 我为百分比设置了固定宽度并删除了 ems,实际上没有区别。还删除了单选属性中的左右对齐百分比,因此它在两个维度上都有自己的大小 (wrap_content)。下一步在代码中:

if(radioMarginLeft<0) {
    int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(
                    percentTextView.getLayoutParams().width, View.MeasureSpec.AT_MOST);
    int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);

    radioButton.measure(widthMeasureSpec, heightMeasureSpec);

    radioMarginLeft = (percentTextView.getLayoutParams().width -
                    radioButton.getMeasuredWidth())/2;
}

((RelativeLayout.LayoutParams) radioButton.getLayoutParams()).leftMargin=radioMarginLeft;

测量无线电,百分比现在具有固定宽度,因此无需测量。 radioMarginLeft 只计算一次并保留在方法之外,在我的情况下它甚至可能是静态的。

附加:设置收音机的填充时要小心,因为Add margin between a RadioButton and its label in Android?(查看最受好评的答案)

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 2017-04-25
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2016-09-06
    • 2016-10-08
    相关资源
    最近更新 更多