Android布局:使RadioGroup占据方形ImageView旁边的屏幕宽度

时间:2013-06-28 14:57:09

标签: android layout imageview

我有这个布局:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioGroup
        android:id="@+id/MyTabs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton ... />

        <RadioButton ... />
    </RadioGroup>

    <SquareImageView
        android:layout_height="match_parent" />

</LinearLayout>

这里是SquareImageView的代码:

public class SquareImageView extends ImageView {
   public SquareImageView(Context context) {
     super(context);
   }

   public SquareImageView(Context context, AttributeSet attrs) {
     super(context, attrs);
   }

   public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
     super(context, attrs, defStyle);
   }

   public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
     super.onMeasure(widthMeasureSpec, heightMeasureSpec);
     int size = getMeasuredHeight();//Math.min(getMeasuredWidth(), getMeasuredHeight());
     setMeasuredDimension(size, size);
   }
}

现在,我想要实现的是:

enter image description here

我希望RadioGroup占用尽可能多的空间。 LinearLayout的高度应适应RadioGroup所需的高度。每个RadioButton应占据RadioGroup的50%。 SquareImageView应该调整它的高度以匹配LinearLayout的高度,它的宽度也应该适应它的方形。

这甚至可能吗?

RadioGroup本身没问题,但棘手的部分是方形ImageView,因为我不能让它自动调整它的宽度。它是方形的,但我需要手动设置它的宽度。如果我没有手动设置宽度,它似乎是方形(在Eclipse预览布局管理器中),但它最终在屏幕外,RadioGroup占据整个屏幕宽度。如果我设置的宽度太宽,则右侧会有死区。

试图摆弄各种各样的设置,但没有什么能让它变得非常正确。我想避免在绝对值中设置尺寸,而是让RadioGroup的高度决定其余视图的尺寸......

2 个答案:

答案 0 :(得分:0)

试试这个:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioGroup
        android:id="@+id/MyTabs"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weig="1" >

        <RadioButton 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />

        <RadioButton 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />
    </RadioGroup>

    <SquareImageView
        android:layout_width="0dp"
        android:layout_height="match_parent" />

</LinearLayout>

答案 1 :(得分:0)

您可以尝试以下步骤: 1,设置如下布局:

<RadioGroup
    android:id="@+id/MyTabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="1" >

    <RadioButton 
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5" 
        ... />

    <RadioButton 
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5" 
        ... />
</RadioGroup>

<SquareImageView
    android:layout_width="0dp"
    android:layout_height="match_parent" />

2,一旦视图将方形视图的programatically find the height of linear layoutprogramatically set the width加载到同一个值,使其成为正方形

3,Find the width of the screen然后将广播组的宽度设置为屏幕宽度与sqaureview宽度之间的差值,以便占用剩余的屏幕宽度。