Ich möchte eine TextView-Höhe zurücksetzen, nachdem ich sie dem Hauptfenster in der XML-Datei hinzugefügt habe.
in einem 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>
Ich möchte es nur von 50 auf 70 ändern:
Ich habe es versucht:
TextView text = (TextView)findViewById(R.id.text_l);
text.setHeight(70);
aber nichts hat sich geändert.
Sie sollten es über LayoutParams
ändern:
LayoutParams params = (LayoutParams) textView.getLayoutParams();
params.height = 70;
textView.setLayoutParams(params);
EDIT
Sie sollten in Ihrem Code keine Größen in Pixeln verwenden. Verwenden Sie dazu Dimensionen:
dimens.xml:
<dimen name="text_view_height">50dp</dimen>
In Code:
params.height = getResources().getDimensionPixelSize(R.dimen.text_view_height);
Pragmatisch können Sie die Höhe der Textansicht wie folgt einstellen:
private TextView mTxtView;
int height = 50; //your textview height
mTxtView.getLayoutParams().height = height;
sie können Breite und Höhe der Textansicht dynamisch einstellen
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);
Ich weiß, dass dies eine alte Frage ist, aber für andere, die dies finden könnten, gibt es Szenarien, in denen Sie nach dem Ändern der Layout-Parameter textView.requestLayout () aufrufen sollten. Es kann gut sein, es wegzulassen, wenn Sie einfach die Layout-Parameter einmalig ändern, bevor das Layout gezeichnet wird. In meinem Fall wollte ich den Höhenparameter einer TextView basierend auf einer Auswahl eines Optionsfelds mithilfe von onCheckedChangedListener ändern. Die TextView-Höhe würde jedoch nur beim ersten Zeichnen aktualisiert. Durch das Hinzufügen von requestLayout () wurde dieses Problem behoben.
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()
}
Konvertiere DP in Pixel, siehe diesen Beitrag :
fun convertDpToPixel(dp: Float, context: Context): Int {
return (dp * (context.resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)).toInt()
}