我有一个ListView
,其中一个空视图设置为我以编程方式创建的视图。我想让它在水平和垂直方向都居中。我在搜索如何在Google上执行此操作时找到了此代码:
TextView myTv = new TextView(getActivity());
myTv.setText("No results");
RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
param.addRule(RelativeLayout.CENTER_IN_PARENT, 0);
myTv.setLayoutParams(param);
myTv.setVisibility(View.GONE);
((RelativeLayout) mScheduleListView.getParent()).addView(myTv, 0);
mScheduleListView.setEmptyView(myTv);
上面包含ListView的片段的XML布局如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ScheduleFragment" >
<ListView android:id="@+id/mScheduleListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
android:divider="@null"
android:dividerHeight="10.0sp" />
</RelativeLayout>
布局显示,但不是居中。我不知道为什么它不起作用。我尝试弄乱LayoutParams
并将其更改为MATCH_PARENT
,但显然这不是问题。
如果是这样可能是什么问题以及如何解决它?
答案 0 :(得分:2)
在中心设置Textview
重力
帮助代码:
myTv.setGravity(Gravity.CENTER);
答案 1 :(得分:1)
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
在你的布局中写下这段代码..它可能有用......
答案 2 :(得分:0)
解决!
显然param.addRule(RelativeLayout.CENTER_IN_PARENT, -1)
有效
感谢文档,我发现true
的值为-1
我读到的有关视图居中的所有解决方案建议true
实际为0(对于addRule
方法)。