以编程方式重新设置TextView高度

时间:2012-02-07 11:25:19

标签: android android-xml textview

我想在将其添加到xml文件的主窗口后重置textView高度。

在RelativeLayout中,

  <TextView
      android:id="@+id/text_l"
      android:layout_width="50sp"
      android:layout_height="50sp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginLeft="10sp"
      android:layout_marginTop="145dp"
      android:gravity="center"
      android:textAppearance="?android:attr/textAppearanceLarge"
      android:textColor="#000000" >
  </TextView>

我只想将它从50改为70:

我试过了:

 TextView text = (TextView)findViewById(R.id.text_l);
 text.setHeight(70);

但没有改变。

6 个答案:

答案 0 :(得分:91)

您应该通过LayoutParams

进行更改
LayoutParams params = (LayoutParams) textView.getLayoutParams();
params.height = 70;
textView.setLayoutParams(params);

修改

您不应在代码中使用像素大小,请使用尺寸:

dimens.xml:

<dimen name="text_view_height">50dp</dimen>

在代码中:

params.height = getResources().getDimensionPixelSize(R.dimen.text_view_height);

答案 1 :(得分:10)

务实地,您可以将textview高度设置为:

private TextView mTxtView;
int height = 50; //your textview height
mTxtView.getLayoutParams().height = height;

答案 2 :(得分:4)

您可以通过

动态设置textview的宽度和高度
private TextView mTxtView;
private int screenWidth, screenHeight;
Display display = getWindowManager().getDefaultDisplay(); 
    screenWidth = display.getWidth();
    screenHeight = display.getHeight();


LayoutParams params = mTxtView.getLayoutParams();
    params.width = screenWidth-30;
    mTxtView.setLayoutParams(params);

答案 3 :(得分:1)

如果要使用dimen的示例方法

首先,您应该在dimen XML文件中设置大小。

@Input()

<dimen name="text_height">50dp</dimen>
<dimen name="text_width">50dp</dimen>

如果您只想设置int(例如,我们要设置50dp高度和100dp宽度)

text_l.getLayoutParams().height = 
     getResources().getDimensionPixelSize(R.dimen.text_height);

text_l.getLayoutParams().width = 
     getResources().getDimensionPixelSize(R.dimen.text_width);

答案 4 :(得分:0)

我知道这是一个老问题,但是为了其他人可能会发现,在某些情况下,应在更改布局参数后调用textView.requestLayout()。如果您只是在绘制布局之前一次性更改布局参数,则可以忽略它。就我而言,我想使用onCheckedChangedListener基于单选按钮选择来更改TextView的height参数,但是TextView的高度只会在第一次绘制时更新。添加requestLayout()解决了此问题。

TextView tv;
ViewGroup.LayoutParams params = tv.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
if(!tv.isInLayout()) {//make sure it isn't currently in a layout pass 
    tv.requestLayout();//request a layout pass
 }

答案 5 :(得分:0)

在Kotlin中,将DP转换为像素

  changeTextHeight.setOnClickListener { view ->

         // random height for testing
        val randomHeightInDP = Random().nextFloat() * (50.0f - 10.0f) + 10

        // set Height in pixels
        hello.layoutParams.height = convertDpToPixel(randomHeightInDP, applicationContext)
         //refresh layout
        hello.requestLayout()


    }

Convert DP to pixels, see this post

fun convertDpToPixel(dp: Float, context: Context): Int {
        return (dp * (context.resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)).toInt()
    }