SetEmptyView 不适合他的父级(列表视图)
Posted
技术标签:
【中文标题】SetEmptyView 不适合他的父级(列表视图)【英文标题】:SetEmptyView doesn't fit inside his parent (list view) 【发布时间】:2016-11-09 02:55:44 【问题描述】:这就是我为空视图设置“视图”时发生的情况。 (空视图适合整个屏幕而不是列表视图的大小。
issue
我想将我的空视图放在蓝色区域内(见图): enter image description here
empty_items
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="#bdbdbd">
<ImageView
android:id="@+id/image1"
android:layout_
android:layout_
android:layout_gravity="center"
android:background="@mipmap/ic_inf"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:contentDescription="information">
</ImageView>
<TextView
android:layout_
android:layout_
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="SIN NADA POR MOSTRAR"
android:textAlignment="center"
android:textSize="32sp"
android:textStyle="bold"
android:textColor="#757575"
android:id="@+id/infoMsgTextView"
android:layout_gravity="center_horizontal|bottom"
android:layout_alignParentTop="false"
android:layout_alignParentLeft="false"
android:layout_alignParentStart="true"
android:layout_marginTop="224dp"
android:layout_alignParentEnd="false"
android:layout_alignParentBottom="true"/>
sales_fragment.xml - 我想设置空视图的带有列表视图的片段。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fbutton="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:htext="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
xmlns:fab="http://schemas.android.com/apk/res-auto"
tools:context=".controler.SalesFragment"
android:visibility="visible"
>
<!-- TODO: Update blank fragment layout -->
<RelativeLayout
android:layout_
android:layout_
android:layout_gravity="center"
android:background="#144257"
android:id="@+id/relativeLayout"
android:layout_below="@+id/tvClient"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<EditText
android:layout_
android:layout_
android:inputType="numberDecimal"
android:background="@drawable/roundedshadow_et"
android:ems="10"
android:id="@+id/discountEditText"
android:elegantTextHeight="false"
android:hint="@string/discountHint"
android:textColorHint="#FFFF"
android:textColor="#FFFF"
android:textAlignment="center"
android:layout_alignTop="@+id/etPrice"
android:layout_toLeftOf="@+id/etPrice"
android:layout_toStartOf="@+id/etPrice"/>
<AutoCompleteTextView
android:layout_
android:background="@drawable/roundedshadow_et"
android:layout_
android:singleLine="true"
android:scrollHorizontally="true"
android:id="@+id/productAutoCompleteTextView"
android:hint="@string/product"
android:textColorHint="#FFFF"
android:layout_gravity="center"
android:textAlignment="center"
android:textColor="#ffff"
android:visibility="visible"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
<EditText
android:layout_
android:layout_
android:inputType="numberDecimal"
android:background="@drawable/roundedshadow_et"
android:ems="10"
android:id="@+id/amountEditText"
android:elegantTextHeight="false"
android:textAlignment="center"
android:textColor="#FFFF"
android:textColorHint="#FFFF"
android:hint="@string/amountHint"
android:layout_alignTop="@+id/discountEditText"
android:layout_alignLeft="@+id/productAutoCompleteTextView"
android:layout_alignStart="@+id/productAutoCompleteTextView"/>
<info.hoang8f.widget.FButton
android:layout_
android:layout_
fbutton:buttonColor="#144257"
fbutton:shadowColor="#0e2e3c"
fbutton:shadowEnabled="true"
fbutton:shadowHeight="5dp"
fbutton:cornerRadius="5dp"
android:textColor="#ffff"
android:textAlignment="center"
android:text="@string/addProduct"
android:id="@+id/addProductBtn"
android:layout_below="@+id/discountEditText"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"/>
<EditText
android:layout_
android:layout_
android:inputType="numberDecimal"
android:background="@drawable/roundedshadow_et"
android:ems="10"
android:id="@+id/etPrice"
android:elegantTextHeight="false"
android:textAlignment="center"
android:textColor="#FFFF"
android:textColorHint="#FFFF"
android:hint="@string/priceHint"
android:layout_centerVertical="true"
android:layout_alignRight="@+id/productAutoCompleteTextView"
android:layout_alignEnd="@+id/productAutoCompleteTextView"/>
</RelativeLayout>
<com.hanks.htextview.HTextView
android:id="@+id/tvClient"
android:layout_
android:layout_
android:background="#144257"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="15sp"
htext:animateType="anvil"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textAlignment="center"/>
<com.hanks.htextview.HTextView
android:id="@+id/tvPrice"
android:layout_
android:layout_
android:background="#144257"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="15sp"
htext:animateType="anvil"
android:textAlignment="center"
android:layout_below="@+id/relativeLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
<com.github.clans.fab.FloatingActionMenu
android:id="@+id/sale_floating_menu"
android:layout_
android:layout_
fab:menu_animationDelayPerItem="55"
fab:menu_backgroundColor="@color/fbutton_color_transparent"
fab:menu_buttonSpacing="0dp"
fab:menu_colorNormal="#e040fb"
fab:menu_colorPressed="#4d0359"
fab:menu_colorRipple="#99d4d4d4"
fab:menu_fab_label="Opciones de venta"
fab:menu_fab_size="normal"
fab:menu_icon="@mipmap/shopping_cart"
fab:menu_labels_colorNormal="#333"
fab:menu_labels_colorPressed="#444"
fab:menu_labels_colorRipple="#66efecec"
fab:menu_labels_cornerRadius="3dp"
fab:menu_labels_ellipsize="none"
fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
fab:menu_labels_margin="0dp"
fab:menu_labels_maxLines="-1"
fab:menu_labels_padding="8dp"
fab:menu_labels_position="left"
fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
fab:menu_labels_showShadow="true"
fab:menu_labels_singleLine="false"
fab:menu_labels_textColor="#f2f1f1"
fab:menu_labels_textSize="15sp"
fab:menu_openDirection="up"
fab:menu_shadowColor="#66aff198"
fab:menu_shadowRadius="4dp"
fab:menu_shadowXOffset="1dp"
fab:menu_shadowYOffset="4dp"
fab:menu_showShadow="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
>
<com.github.clans.fab.FloatingActionButton
android:id="@+id/floating_add"
android:layout_
android:layout_
android:src="@mipmap/add_tag"
fab:fab_size="mini" />
<com.github.clans.fab.FloatingActionButton
android:id="@+id/floating_checkout"
android:layout_
android:layout_
android:src="@mipmap/checkout"
fab:fab_size="mini" />
</com.github.clans.fab.FloatingActionMenu>
<RelativeLayout
android:layout_
android:layout_
android:layout_below="@+id/tvPrice">
<ListView
android:layout_
android:layout_
android:longClickable="true"
android:id="@+id/lvCart"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
SalesFragment.java @覆盖 public View onCreateView(LayoutInflater inflater,最终的 ViewGroup 容器, 捆绑保存的InstanceState) // 膨胀这个片段的布局
View view = inflater.inflate(R.layout.fragment_sales, container, false);
neverEmptyListView = (ListView) view.findViewById(R.id.lvCart);
ViewGroup headerView = (ViewGroup) getActivity().getLayoutInflater().inflate(R.layout.header_row_layout, neverEmptyListView, false);
neverEmptyListView.addHeaderView(headerView);
View emptyView = getActivity().getLayoutInflater().inflate(R.layout.empty_items, null);
emptyMsg = (TextView) emptyView.findViewById(R.id.infoMsgTextView);
emptyMsg.setText("Agregue productos para la venta");
getActivity().addContentView(emptyView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
neverEmptyListView.setEmptyView(emptyView);
items = new ArrayList<String>();
lvAdapter = new ListViewAdapter
(getContext(), R.layout.row_layout, R.id.description, items);
neverEmptyListView.setAdapter(lvAdapter);
【问题讨论】:
去掉这一行然后检查:getActivity().addContentView(emptyView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 当我删除该行时,即使没有项目,空视图也会从我的列表视图中消失。 【参考方案1】:我这样解决我的问题:
((ViewGroup)neverEmptyListView.getParent()).addView(emptyView);
neverEmptyListView.setEmptyView(emptyView);
【讨论】:
以上是关于SetEmptyView 不适合他的父级(列表视图)的主要内容,如果未能解决你的问题,请参考以下文章
Android子视图高度与ListView项目中的父级不匹配