我在FrameLayout
内CoordinatorLayout
来充气我的片段,其中包含RecyclerView
。问题是,我想在加载RecyclerView
时显示进度条,但进度条始终位于Toolbar
下的屏幕顶部。我尝试了各种布局,设置gravity
或centerInParent
但没有一个有效。有没有办法实现这个目标?
答案 0 :(得分:47)
android:layout_gravity="center"
工作得很好。 并删除你的FrameLayout,它是多余的。
答案 1 :(得分:7)
经过一番研究后,我找不到一种方法来完成这项工作,所以最后我做到了这一点:
android:layout_gravity="center"
。在活动中,使用2种方法显示/隐藏进度条:
public void showProgress() {
progressBar.setVisibility(View.VISIBLE);
}
public void hideProgress() {
progressBar.setVisibility(View.INVISIBLE);
}
在片段中,通过getActivity()
获取上述活动的参考,将其投射到实际活动并调用必要的方法。
context = getActivity();
((MainActivity)context).showProgress();
编辑:这似乎在支持库23.1.1
中得到修复答案 2 :(得分:3)
如果要将视图置于另一视图中心,则需要向所有边添加约束。您将使用:
app:layout_constraintBottom_toBottomOf="@id"
app:layout_constraintLeft_toLeftOf="@id"
app:layout_constraintRight_toRightOf="@id"
app:layout_constraintTop_toTopOf="@id"
对于下面的示例,我只是将TextView置于协调器布局的中间。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/activity_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a centered View"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
结果:
答案 3 :(得分:2)
我创建了My View Like:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char fname[10],mname[10],lname[10];
printf("Enter the name:\n");
if(lname==NULL)
{
scanf("%s %s ",fname,mname);
}
else
scanf("%s %s %s",fname,mname,lname);
if(lname==NULL)
{
printf("%c.%s",fname[0],mname);
}
else
printf("%c.%c.%s",fname[0],mname[0],lname);
return 0;
}
答案 4 :(得分:1)
将CoordinatorLayout放在RelativeLayout中,并在此RelativeLayout中添加进度条。将进度条的CenterInParent设置为true。根据需要使进度条显示/可见。
答案 5 :(得分:0)
在RelativeLayout中使用FrameLayout并设置CenterInParent属性 进步吧。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/myFrameLyt"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>