按钮不会在GridLayout中显示或删除

时间:2016-05-17 18:47:48

标签: java android image android-layout layout

以下是我的问题:当某些图片放入GridLayout时,周围的其他应用图片会消失。我注意到图像似乎是"推送出"视图中的其他图像具有非常大的图像

1 个答案:

答案 0 :(得分:1)

我将概述XML中可能导致一些问题的一些方面。首先,您需要一个XML布局文件 看起来像下面的东西将保持您的顶级布局。这将在自己的文件中。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/home_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

请注意,RecyclerView在LinearLayout中是独立的。接下来需要一个单独的XML文件 这将为您的布局的每个单元格保留ImageButton和TextView的布局。这将适合每个 RecyclerView中网格的单元格。我使用android:scaleType="centerCrop"将大图像放入ImageButton。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="10dp">

    <ImageButton
        android:id="@+id/new_app_button"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/new_app_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/new_app_button"
        android:layout_centerInParent="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp" />

</RelativeLayout>
onCreateViewHolder()的{​​p> RecyclerViewHolder将如下所示,假设“grid_cell.xml”是名称 上面的XML文件。

@Override
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
    View layoutView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.grid_cell, parent, false);
    RecyclerViewHolders holder = new RecyclerViewHolders(layoutView);
    return holder;
}

试一试。我认为其他一切都还可以。我希望它可以帮助你。