我有以下活动:
<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="es.xxx.xxx.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#CCFF0000"
android:id="@+id/lyNetworkError">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="No hay conexión a internet"
android:textAlignment="center"/>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"/>
</RelativeLayout>
在其FrameLayout中,应用程序将加载其他片段。
这是onCreate活动代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Constants.setAppContext(this);
setContentView(R.layout.activity_main);
Log.d("LoadFragment", "1 "+ loadFragment);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.container, new MainFragment()).commit();
}
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkStateReceiver, filter);
fragmentManager = getSupportFragmentManager();
lyNetworkError = (LinearLayout) findViewById(R.id.lyNetworkError);
}
问题在于LinearLayout(包含TextView)没有显示(可以通过LinearLayout呈现片段渲染,因为如果我删除了getSupportFragmentManager().beginTransaction().replace(R.id.container, new MainFragment()).commit();
,则会出现LinearLayout)
那么,如何在片段上显示LinarLayout(在FrameLayout中加载)?
答案 0 :(得分:1)
如果LinearLayout
和您的Fragment
显示在屏幕上的正确位置时,每个单独显示,那么您可以简单地颠倒FrameLayout
和{{的顺序XML中的1}}。
问题是LinearLayout
允许其子项重叠。 RelativeLayout
中的最后一项将显示在&#34;以上&#34;或者&#34;在顶部&#34;布局中的其他项目。由于您尚未为视图指定任何布局限制,因此RelativeLayout
会将它们都放在默认位置(即左上角)。由于您的RelativeLayout
设置为填充父视图的宽度和高度,因此它将覆盖其他所有内容。
如果您确实希望FrameLayout
显示在LinearLayout
上方,那么您可以使用FrameLayout
的定位属性(explained very well here)来定位您的观看次数。
具体来说,你会找到这样的东西:
RelativeLayout
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/lyNetworkError"
android:id="@+id/container"/>
属性告诉android:layout_below
您希望它始终位于ID为FrameLayout
的视图下方(下方与文字在一张纸上,而不是在三维中空间)。