Java 在ConstraintLayout内的RecyclerView内居中进度条
我有一个Java 在ConstraintLayout内的RecyclerView内居中进度条,java,android,android-recyclerview,android-progressbar,android-constraintlayout,Java,Android,Android Recyclerview,Android Progressbar,Android Constraintlayout,我有一个ProgressBar,它是RecyclerView的一个项目,是在本教程之后用适配器添加到这里的 但是在activity\u main.xml文件中,我没有使用RelativeLayout,而是使用默认的ConstraintLayout。我的问题是ProgressBar没有居中 请在下面找到我上面描述的布局: 进度条项目 活动_main.xml 您是否试图在屏幕中间居中? 或者只是在线性布局中 尝试使用重力而不是布局重力,布局重力将尝试在线性布局而不是约束布局内居中。因为已经有匹
ProgressBar
,它是RecyclerView
的一个项目,是在本教程之后用适配器添加到这里的
但是在activity\u main.xml
文件中,我没有使用RelativeLayout
,而是使用默认的ConstraintLayout
。我的问题是ProgressBar
没有居中
请在下面找到我上面描述的布局:
进度条项目
活动_main.xml
您是否试图在屏幕中间居中?
或者只是在线性布局中
尝试使用重力而不是布局重力,布局重力将尝试在线性布局而不是约束布局内居中。因为已经有匹配的父宽度。另外,在将进度条添加到视图中时,也要显示post代码。是否要将其置于屏幕中间?
或者只是在线性布局中
尝试使用重力而不是布局重力,布局重力将尝试在线性布局而不是约束布局内居中。因为已经有匹配的父宽度。另外,在将进度条添加到视图中时,也要发布代码以显示。我仔细查看了您的问题,但根本不清楚发生了什么。我已经采取了样本项目,并应用到布局您的更改,它的工作刚刚好。(我确实删除了一个tools
引用,并更改了几个ID。)
下面是对上面两个布局所做的更改。下面是一个按预期显示中心进度条的示例
我认为这是一个约束问题,但正如您从演示中看到的,情况并非如此
这也可能与您正在运行的ConstraintLayout
版本或其他一些配置有关,因此您可能需要检查一下。否则,看起来有什么事情正在发生,但还没有透露出来。您是否正在对布局小部件进行任何其他操作
了解您的布局中有哪些内容没有排列是很有用的。给LinearLayout
一个背景色,看看它是否在屏幕上伸展。这将告诉您进度条是否未对齐或LinearLayout
是否被挤压
另一种可能性:您是否未能在线性布局的膨胀中命名父项?说这样的话:
View view = LayoutInflater.from(activity).inflate(R.layout.item_loading, null, false);
而不是这个
View view = LayoutInflater.from(activity).inflate(R.layout.item_loading, parent, false);
这个小小的差异会把你的进度条推到一边。我仔细研究了你的问题,现在还不清楚到底发生了什么。我已经采取了样本项目,并应用到布局您的更改,它的工作刚刚好。(我确实删除了一个tools
引用,并更改了几个ID。)
下面是对上面两个布局所做的更改。下面是一个按预期显示中心进度条的示例
我认为这是一个约束问题,但正如您从演示中看到的,情况并非如此
这也可能与您正在运行的ConstraintLayout
版本或其他一些配置有关,因此您可能需要检查一下。否则,看起来有什么事情正在发生,但还没有透露出来。您是否正在对布局小部件进行任何其他操作
了解您的布局中有哪些内容没有排列是很有用的。给LinearLayout
一个背景色,看看它是否在屏幕上伸展。这将告诉您进度条是否未对齐或LinearLayout
是否被挤压
另一种可能性:您是否未能在线性布局的膨胀中命名父项?说这样的话:
View view = LayoutInflater.from(activity).inflate(R.layout.item_loading, null, false);
而不是这个
View view = LayoutInflater.from(activity).inflate(R.layout.item_loading, parent, false);
这个微小的差异会将进度条推到一边。您需要将重力添加到父线性布局中,以将孩子的重力设置为中心。我已更正进度条布局。
希望这能有所帮助
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
</LinearLayout>
您需要将重力添加到父线性布局中,以将子对象的重力设置为中心。我已更正progressbar布局。
希望这能有所帮助
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
</LinearLayout>
我又看了一眼你的问题,认为我的回答没有真正解决这个问题。当你说进度条没有居中时,你的屏幕是什么样子的?你能发布一个屏幕截图吗?我又看了一眼你的问题,认为我的回答没有真正解决它。当你说进度条没有居中时,你的屏幕是什么样子的?你能发布一个屏幕截图吗?将android:gravity
添加到ProgressBar
无法修复它。而ProgressBar
是通过编程方式添加到适配器中的,该适配器扩展了RecyclerView.adapter
(请参阅我在问题中发布的链接。除了activity\u main.xml
中的ConstraintLayout
之外,它完全相同)。将android:gravity
添加到ProgressBar
无法修复它。而ProgressBar
是通过编程方式添加到适配器中的,该适配器扩展了RecyclerView.adapter
(请参阅我在问题中发布的链接。除了activity\u main.xml
中的ConstraintLayout
之外,它完全相同)。充气机中缺少的父项
是进度条
未居中的主要原因。谢谢。充气机
中缺少的父项
是导致进度条
未居中的主要原因。谢谢