动态TextView没有垂直居中问题

r00_a2lBUR 2018-10-17 09:22:43
我做了一个Demo,想实现在LinearyLayout动态添加的TextView能够垂直居中,但效果出不来:

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试一下"
android:id="@+id/TextView_Title"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="添加"
android:layout_below="@id/TextView_Title"
android:onClick="e_Button_Clicked"
android:id="@+id/Button_Add"
/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/Button_Add"
android:id="@+id/LinearLayout_Test"
android:orientation="vertical"
>

</LinearLayout>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/LinearLayout_Test"
android:text="我是有底线的"
/>
</RelativeLayout>


Activity代码:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mLinearLayoutTest=findViewById(R.id.LinearLayout_Test);
}

private void f_add(){
mLinearLayoutTest.removeAllViews();

LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,300
);
layoutParams.gravity=Gravity.CENTER_VERTICAL;

TextView textView=new TextView(this);
textView.setText("测试垂直居中的文字");
textView.setLayoutParams(layoutParams);
mLinearLayoutTest.addView(textView);
}

public void e_Button_Clicked(View view){
int iViewID=view.getId();
switch (iViewID){
case R.id.Button_Add:
f_add();
break;
}
}

private LinearLayout mLinearLayoutTest;
}
...全文
269 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2018-10-17
  • 打赏
  • 举报
回复
为什么要用代码设置textview,不是在布局里拖控件就好了么
jklwan 2018-10-17
  • 打赏
  • 举报
回复
同样的问题,你是又开了个新贴? 你给textview设置了高度,而父布局高度是wrap_content,那么父布局高度就是子布局的高度,给设置TextView居中显示textview.setGravity(Gravity.CENTER_VERTICAL)。 或者父布局设置固定高度,然后setGravity(Gravity.CENTER_VERTICAL),前提是LinearLayout是水平方向的即orientation为horizontal
r00_a2lBUR 2018-10-17
  • 打赏
  • 举报
回复
引用 1 楼 jklwan 的回复:
同样的问题,你是又开了个新贴?
你给textview设置了高度,而父布局高度是wrap_content,那么父布局高度就是子布局的高度,给设置TextView居中显示textview.setGravity(Gravity.CENTER_VERTICAL)。
或者父布局设置固定高度,然后setGravity(Gravity.CENTER_VERTICAL),前提是LinearLayout是水平方向的即orientation为horizontal

是因为上个还没有去试,这个问题又出现了

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧