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);
しかし、何も変わっていません。
LayoutParams
経由で変更する必要があります。
LayoutParams params = (LayoutParams) textView.getLayoutParams();
params.height = 70;
textView.setLayoutParams(params);
[〜#〜] edit [〜#〜]
コードではピクセル単位のサイズを使用しないでください。これには寸法を使用してください。
dimens.xml:
<dimen name="text_view_height">50dp</dimen>
コード内:
params.height = getResources().getDimensionPixelSize(R.dimen.text_view_height);
実際には、次のようにtextviewの高さを設定できます。
private TextView mTxtView;
int height = 50; //your textview height
mTxtView.getLayoutParams().height = height;
あなたは動的に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);
これは古い質問ですが、これを見つける可能性のある他の人のために、レイアウトパラメーターを変更した後にtextView.requestLayout()を呼び出す必要があるシナリオがあります。レイアウトが描画される前に一度だけレイアウトパラメータを変更する場合は、省略しても構いません。私の場合、onCheckedChangedListenerを使用したラジオボタンの選択に基づいてTextViewの高さパラメーターを変更したかったのですが、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
}
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()
}
fun convertDpToPixel(dp: Float, context: Context): Int {
return (dp * (context.resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)).toInt()
}