重复的背景会影响TextViews的高度

时间:2013-09-18 10:09:49

标签: android

我有一个想要在x轴上重复以匹配宽度的图像。

repeating_section_header.xml:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/table_section_header_light"
    android:tileMode="repeat" />
到目前为止一切顺利。 现在我将其设置为TextView

的背景
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/row_headline_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/repeating_section_header"
    android:gravity="left|center_vertical"
    android:textColor="@color/white"
    android:textSize="14sp" 
    android:textStyle="bold"/>

但是现在TextViews的高度是@drawable/table_section_header_light的高度,即使我已将TextViews高度设置为wrap_content

任何想法如何解决(使TextViews高度包装内容)

2 个答案:

答案 0 :(得分:0)

这样做的一种方法是通过编程方式确定文本视图的高度,只显示文本,固定高度,以及设置背景可绘制。这样,它将根据使用的行数调整到textview的高度。

Java:

TextView v = (TextView) findViewById(R.id.row_headline_text);
v.setText("<your text here>");
v.measure(android.view.View.MeasureSpec.UNSPECIFIED, android.view.View.MeasureSpec.UNSPECIFIED);

android.view.ViewGroup.LayoutParams params = v.getLayoutParams();
params.height = v.getMeasuredHeight();
v.setLayoutParams(params);
v.setBackgroundResource(R.drawable.table_section_header_light);

的xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/row_headline_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left|center_vertical"
    android:textColor="@color/white"
    android:textSize="14sp"
    android:textStyle="bold" />

答案 1 :(得分:0)

如果您对此技术没问题,请尝试:

  1. 将TextView包装到RelativeLayout中。
  2. 将View添加为此RelativeLayout中的第一个子项。 (让TextView成为第二个孩子)
  3. 将您的背景从TextView移至此新视图
  4. 将TextView(AlignLeft,AlignRight,AlignTop,AlignBottom)的布局参数设置为@+id/row_headline_text
  5. 这应该有效。如果TextView的父级已经是RelativeLayout,则不需要新的RelativeLayout。