Textview在GridView中被剪裁

时间:2015-05-24 12:30:25

标签: android android-gridview

我正在学习如何使用gridview并开始使用示例应用程序来构建基本计算器。

我们的想法是使用gridview来保存细胞。 gridview使用TextAdapter(扩展BaseAdapter),它返回与传递的位置相对应的TextView。

我可以设置所有内容以显示从现在开始的0-9的数字,但是文本视图似乎在右边显示。这是我面临的问题

enter image description here

以下是我的XML

MainActivity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:textAlignment="center">

    <TextView android:text="@string/hello_world" android:layout_width="fill_parent"
        android:layout_height="48dp"
        android:textIsSelectable="true"
        android:id="@+id/textView" />

    <GridView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/calculatorCellsView"

        android:layout_marginTop="100dp"

        android:numColumns="5"
        android:columnWidth="20dp"
        android:clickable="true"
        android:choiceMode="singleChoice"
        android:visibility="visible"
        android:verticalSpacing="2dp"
        android:horizontalSpacing="2dp"
        android:gravity="center"
        />


</RelativeLayout>

cellLayoutOfGridView xml

<?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">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/id_gridCell"
        android:background="@drawable/view_background"
        android:gravity="center"
        />

</LinearLayout>

绘制边框的可绘制背景

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke android:color="#000000" android:width="4dp"/>
    <solid android:color="@color/background_material_light"/>
    <padding android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp"/>
</shape>

我发现问题出在Adapter的getView()函数的定义中,覆盖了layoutparams。从java文件中删除它修复它!

1 个答案:

答案 0 :(得分:1)

如果您不使用LinearLayout,请尝试删除它。
cellLayoutOfGridView.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/id_gridCell"
    android:background="@drawable/view_background"
    android:gravity="center"
    android:layout_gravity="center" />

您可以看到导致View内部网格单元格被推向右侧的原因。
对于KitKat:转到设置&gt;开发人员选项&gt;显示布局界限
对于Lollipop:转到设置&gt;开发人员选项&gt;显示布局边界
重新打开您的应用。现在您可以看到视图边距和填充。
如果您没有找到问题,也可以在此处发布截图。