将布局设为大的真实内容,而不是背景

时间:2013-07-24 13:22:43

标签: android android-layout

我有一个有两个孩子的relativeLayout:两个文本视图,一个低于另一个。 relativeLayoutwrap_content作为身高规则。

现在这个relative_layout的背景为800x500,所以它需要这个500高度像素作为其高度。我必须裁剪它,给出像150dp这样的高度规则来容纳两个文本视图,而不会浪费比所需更多的空间。

如何使用该背景,但将relativeLayout的高度设为真wrap_content

 <RelativeLayout
        android:id="@+id/mid"
        android:layout_below="@id/top"
        android:layout_width="wrap_content"
        android:layout_height="130dp" /*if i have wrap_content here it take 500px as height */
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="5dp"
        android:paddingLeft="10dp"
        android:background="@drawable/counter_background2" // 800x500>

            <TextView
                android:id="@+id/CounterMechanicsTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="10dp"
                android:textSize="30dp"
                android:text="@string/mechanics" />

            <TextView
                android:id="@+id/CounterMechanics"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/CounterMechanicsTitle"
                android:layout_marginTop="5dp"
                android:textSize="20dp"
                android:text="@string/mechanics" />

        </RelativeLayout>

1 个答案:

答案 0 :(得分:1)

好的,这是一种方法:

    TextView CounterMechanicsTitle = (TextView) findViewById(R.id.CounterMechanicsTitle);
    TextView CounterMechanics = (TextView) findViewById(R.id.CounterMechanics);
    Drawable dr = getResources().getDrawable(R.drawable.counter_background2);
    RelativeLayout rl = (RelativeLayout) findViewById(R.id.mid);

    int heightOfTextViews = CounterMechanicsTitle.getHeight() + CounterMechanics.getHeight();
    //Now you have the height of the two TextViews

    Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
    // Scale the drawable to heightOfTextViews *1.6 x heightOfTextViews, so to be scaled properly
    Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, heightOfTextViews*1.6, heightOfTextViews, true));

rl.setBackground(d);
    //Optional 
    //rl.getLayoutParams().height = heightOfTextViews;
    //rl.getLayoutParams().width = heightOfTextViews*1.6;

看看这是否能解决问题。