3

使用 9 补丁图像作为 EditText 字段的背景时,我遇到了缩放问题。我有一个延伸整个宽度的表格,在这里我有以下表格行,它填充了表格的宽度。

问题是我使用 9-patch 图像作为背景,但编辑文本字段没有拉伸到整个宽度,它只拉伸到提示文本的宽度。

<TableRow
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical|center_horizontal" >

    <EditText
        android:id="@+id/et_username"
        android:contentDescription="@string/hint_enterUsername"
        android:hint="@string/hint_enterUsername"
        android:singleLine="true"
        android:textSize="@dimen/edittext_textsize"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"                    
        android:gravity="center_horizontal|center_vertical"
        android:background="@drawable/background_field_top" />

</TableRow>

我可以在图形视图中看到行的宽度确实拉伸,但 EditText 字段没有,如附图所示

图形视图

有没有人对如何使edittext拉伸到整个大小有任何想法?以下是我正在使用的 9-patch 图像。

9 补丁图像

4

3 回答 3

2

来自TableRow上的 Android 开发者文档

水平排列其子项的布局。TableRow 应始终用作 TableLayout 的子项。如果 TableRow 的父级不是 TableLayout,则 TableRow 将表现为水平 LinearLayout。

@Nipun Gogia 的答案不正确,为什么要在只有一个EditText 子项的 LinearLayout 中放置一个 TableRow(表现得像一个水平 LinearLayout) ?

您应该将 EditText 视图放置为TableLayout的直接子视图,然后它将显示为跨越所有表格列的单行。如果需要,您可以添加更多 TableRow 和列。

使用 Nine-Patch 拉伸 EditText 视图的背景图像:

您需要编辑9.png文件的9-patch规则设置图像的可拉伸区域,将顶部规则(黑色1px线)放在图像中间,现在它只在透明端拉伸,留下图像未拉伸。了解她的方法:http: //developer.android.com/tools/help/draw9patch.html

重要!请记住使用扩展名 .9.png 保存图像


以文件扩展名保存的九补丁图像:背景。9.png _

在此处输入图像描述


修改较小的图像,由于九个补丁规则,它看起来与上面相同。

修改后的图像


修改后的图像,但高度不可拉伸。

在此处输入图像描述


注意:如果使用“将图像另存为..”下载上述图像,请记住在文件名中添加.9.png以使其正常工作。

于 2013-01-14T18:30:06.940 回答
1

确保您的图像文件名是 background_field_top.9.png (确保 .9. 存在) 我对您的图像做了一些小改动,以便圆角更平滑,但这不是核心问题。建议图片 如果这没有帮助,请检查背景在没有表格的情况下是否正常工作,以确定问题是布局还是背景图像。

于 2013-01-15T09:58:00.193 回答
1

你对我来说工作得很好..我正在使用我自己的 9 补丁......这是我的代码:

        <LinearLayout
            android:id="@+id/layout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical|center_horizontal" >

                <EditText
                    android:id="@+id/et_username"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/areanumber"
                    android:gravity="center_horizontal|center_vertical"
                    android:singleLine="true"
                    android:text="hello" />
            </TableRow>
        </LinearLayout>

这里 areanumber 是我的 9 补丁图像...只需尝试将您的代码包装在线性布局中我实现了您的 9 补丁图像并且它也可以正常工作

在此处输入图像描述

于 2013-01-16T07:02:51.397 回答