我想在将其添加到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);
但没有改变。
答案 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)
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()
}