How set the android:gravity to TextView from Java side in Android
我可以在textview的xml中使用
我努力了:
1 2 | LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL); labelTV.setLayoutParams(layoutParams); |
但是,如果我理解正确,那会将它应用于
1 | labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM); |
Kotlin版本(感谢Thommy)
1 | labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM |
另外,您是在谈论重力还是layout_gravity?后者在RelativeLayout中不起作用。
这将使文本在文本视图中居中:
1 2 3 4 | TextView ta = (TextView) findViewById(R.layout.text_view); LayoutParams lp = new LayoutParams(); lp.gravity = Gravity.CENTER_HORIZONTAL; ta.setLayoutParams(lp); |
我们可以在任何视图上设置布局重力,如下所示:
1 2 3 4 | myView = findViewById(R.id.myView); myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT); or myView.setGravity(Gravity.BOTTOM); |
这相当于下面的xml代码
1 2 3 4 | <... android:gravity="center_vertical|right" ... .../> |
您应该使用
记住使用
1 2 | LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; |
将无法正常工作。这将设置小部件的重力,而不是文本的重力。
1 | textView.setGravity(Gravity.CENTER | Gravity.BOTTOM); |
这将设置您的textview的重力。
使用此代码
1 2 3 | TextView textView = new TextView(YourActivity.this); textView.setGravity(Gravity.CENTER | Gravity.TOP); textView.setText("some text"); |
通过做一些事情来解决此问题,首先获取我的
1 | int maxLines = (int) TextView.getHeight() / (int) TextView.getTextSize(); |
获得此值后,需要将
1 | TextView.setMaxLines(maxLines); |
一旦超过最大行数,将
1 2 3 | if (TextView.getLineCount() >= maxLines) { TextView.setGravity(Gravity.BOTTOM); } |
为了使其正常工作,必须对
1 | TextView.append("Your Text"); |
此方法的优点是,可以动态使用此方法,而与