0

我有这个布局:

<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);
   }
}

现在,我想要实现的是:

在此处输入图像描述

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

这甚至可能吗?

RadioGroup 本身没有问题,但棘手的部分是方形 ImageView,因为我无法让它自动适应它的宽度。它是方形的,但我需要手动设置它的宽度。如果我没有手动设置宽度,它似乎是方形的(在 Eclipse 预览布局管理器中),但它最终会出现在屏幕之外,并且 RadioGroup 占据了整个屏幕宽度。如果我设置的宽度太宽,它的右侧就会出现死角。

尝试摆弄各种设置,但没有什么能完全正确。我想避免以绝对值设置尺寸,而是让 RadioGroup 的高度决定其余视图的尺寸......

4

2 回答 2

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>
于 2013-06-28T15:46:32.830 回答
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,一旦视图加载,以编程方式找到线性布局的高度,然后以编程方式将 squareview 的宽度设置为相同的值,使其成为正方形

3、找到屏幕的宽度,然后将radio组的宽度设置为屏幕宽度与上面squareview宽度的差,这样就占据了剩余的屏幕宽度。

于 2013-06-28T16:31:23.963 回答