我正在onCreateView()
的{{1}}中展开布局,在Fragment
的活动创建()上,我正在审核Fragment
中的数据并更新布局中的值来自我之前膨胀的DataBase
。
DataBase
我面临的问题是,如果我没有数据,我试图通过删除rootView的所有元素来扩充片段的nodata XML(No LinearLayout main = null;
if (rootView instanceof LinearLayout)
main = (LinearLayout) rootView;
main.removeAllViews();
LayoutInflater inflater = LayoutInflater.from(getActivity()
.getApplicationContext());
View inflatedLayout = inflater
.inflate(R.layout.nodata, null, false);
if (main != null)
main.addView(inflatedLayout);
),DataView
,NoDataXML是膨胀,但UI对齐没有发生,布局没有占据屏幕的整个宽度,它看起来onActivityCreated()
,我给wrapcontent
宽度和高度的nodataxml布局
任何人都知道解决这个问题的标准方法。
答案 0 :(得分:0)
处理这种情况的常用方法是在根片段视图中只有2个子布局:首先是加载数据,第二个是没有数据布局。通常没有数据布局是微小的视图,因此系统没有任何开销。并在onActivityCreated()中使用视图可见性。
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:id="@id/loaded_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<LinearLayout
android:id="@id/no_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
在你内部onActivityCreated做这样的事情:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View noDataView = getView().findViewById(R.id.no_data);
View loadedData = getView().findViewById(R.id.loaded_data);
noDataView.setVisibility(isDataLoaded ? View.GONE : View.VISIBLE);
loadedData.setVisibility(isDataLoaded ? View.VISIBLE : View.GONE);
// display your data
}
答案 1 :(得分:0)
是的,我可以通过编程方式将其设置为中心,而不是xml布局。