如何在整个显示中适应gridview中的所有元素?

时间:2018-04-21 11:37:56

标签: android android-layout android-gridview

我是Android的新手,想要创建一个包含一些元素的gridview(带有TextImage的元素),并受此链接https://www.viralandroid.com/2016/04/android-gridview-with-image-and-text.html的指导。

我有活动屏幕的布局:

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

    <GridView
        android:id="@+id/grid_view_image_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="110dp"
        android:numColumns="3"/>
</LinearLayout> 

带有文本和图像的gridview的布局:

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

    <ImageView
        android:id="@+id/android_gridview_image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginTop="15dp" />

    <TextView
        android:id="@+id/android_gridview_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:textSize="25sp" />
</LinearLayout>

这是我的代码:

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;


public class HomeScreenActivity extends AppCompatActivity {

    private GridView androidGridView;

    private String[] gridViewString = {
            "Anlagenübersicht", "Instandhaltungsaufträge", "Handlungsleitfaden",
            "Wiki", "Historie", "Fehlerdatenbank",
            "Wartungsprotokoll", "Ersatzteile", "Werkzeugkasten",
            "Remotezugriff", "Personal", "Über uns"

    } ;

    private int[] gridViewImageId = {
            R.drawable.icons8_roboter_48, R.drawable.icons8_bestellung_48, R.drawable.icons8_aufgabenliste_48,
            R.drawable.icons8_doktorhut_48, R.drawable.icons8_vergangenheit_48, R.drawable.icons8_datenbank_40,
            R.drawable.icons8_wartung_48, R.drawable.icons8_ersetzen_48, R.drawable.icons8_werkzeugkasten_48,
            R.drawable.icons8_assistent_48, R.drawable.icons8_gruppe_vordergrund_ausgewaehlte_48, R.drawable.icons8_ueber_48,
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_screen);

        CustomGridViewActivity adapterViewAndroid = new CustomGridViewActivity(HomeScreenActivity.this, gridViewString, gridViewImageId);
        androidGridView= (GridView) findViewById(R.id.grid_view_image_text);
        androidGridView.setAdapter(adapterViewAndroid);
        androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int i, long id) {
                Toast.makeText(HomeScreenActivity.this, "GridView Item: " + gridViewString[+i], Toast.LENGTH_LONG).show();
            }
        });
    }

}

但我的输出是:

enter image description here

但是我希望所有元素都能在高度上填充显示,并且没有像你在这里看到的空间:

enter image description here

1 个答案:

答案 0 :(得分:0)

最后,我从这个链接找到了一个解决方案:

android How to stretch rows in the gridview to fill screen?

我必须为我的活动类设置一些属性,并使用它:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int width = metrics.widthPixels;
int height = metrics.heightPixels;

确定高度和宽度。 之后,我必须为View设置最小值和高度。

有关更多信息,建议您查看上面的链接。 :)