在android中,如何使空TextView保持在垂直中间?

时间:2016-07-15 19:54:53

标签: android

在android中,我想在GridView为空时在屏幕中间添加一条空消息。但是下面的布局使文本位于屏幕的中间顶部。如何在垂直方向上将文本放在中间?

GridView gridview = (GridView) findViewById(R.id.gridview);        
TextView emptyText = (TextView)findViewById(R.id.empty);
gridview.setEmptyView(emptyText);



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


    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/gridview"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:columnWidth="100dp"
       android:numColumns="auto_fit"
       android:verticalSpacing="10dp"
       android:horizontalSpacing="10dp"
       android:stretchMode="columnWidth"
        android:paddingTop="?android:attr/actionBarSize"
       android:gravity="center"

       />


        <TextView
        android:id="@+id/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
            android:layout_gravity="center"

        android:gravity="center"
        android:text="No project files found"
        android:textColor="#FFFFFF" />


    </LinearLayout>

4 个答案:

答案 0 :(得分:2)

将父视图设为RelativeLayout,然后设置 TextView

centerInParent="true"
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/grey">

    <TextView
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

答案 1 :(得分:0)

如果您无法将父视图设为相对布局,请尝试以下操作:

.field:not(:last-child) {
  display:inline-block;
}

答案 2 :(得分:0)

试试这个:

<TextView
        android:id="@+id/empty"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="No project files found"
        android:textColor="#FFFFFF" />

答案 3 :(得分:0)

我认为将TextView中心垂直放置的最佳方法是使父布局成为RelativeLayout,并将TextView放置在LinearLayout的中心垂直于LinearLayout,该LinearLayout以父布局为中心。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnWidth="100dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:paddingTop="?android:attr/actionBarSize"
    android:gravity="center"

    />


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_centerInParent="true">
    <TextView
        android:id="@+id/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:text="No project files found"
        android:textColor="#FFFFFF" />
</LinearLayout>
</RelativeLayout>