我有一个有两个孩子的relativeLayout:两个文本视图,一个低于另一个。 relativeLayout
有wrap_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>
答案 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;
看看这是否能解决问题。