在开发Android应用程序时,我偶然发现了一个令人困惑的问题。我正在创建的UI元素是一个包含自定义搜索字段的标题栏。在Android UI编辑器上看起来很棒,但第二个我使用模拟器或它出来的设备并压缩放大镜图像并剪辑编辑文本。我尝试了很多方法,包括将搜索区域的背景图像更改为当前位于父LinearLayout中的自定义搜索字段。然而,这会导致搜索字段大小失控。
欢迎任何建议。
我的问题是:
1)如何在保持搜索区域外观的同时解决这个问题?
2)为什么会出现这个问题?
确认以下设备:
三星Galaxy Nexus 4.0.2
摩托罗拉Zoom 4.0.3
Nexus S 2.3.7
这是UI编辑器的屏幕截图:
这是所有测试设备上的外观截图:
用于生成这些UI元素的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar_matte"
android:gravity="center_vertical"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:layout_weight="1.0"
android:background="@drawable/search_field"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="15dp"
android:src="@drawable/magnifying_glass" />
<EditText
android:id="@+id/campus_map_acitivity_search"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:layout_weight="1.0"
android:background="#0FFF"
android:hint="Search"
android:imeOptions="actionSearch"
android:singleLine="true" />
</LinearLayout>
<Button
android:id="@+id/campus_map_activity_goto_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:background="@drawable/button_list" />
<Button
android:id="@+id/campus_map_activity_my_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/button_location" />
</LinearLayout>
答案 0 :(得分:2)
刚刚弄明白了这个问题。搜索背景图像的顶部和左侧设置为9-patch比例。这一切都很好,但我们忘记设置底部和右侧填充区域,以便内容有空间存在。
http://radleymarx.com/blog/simple-guide-to-9-patch/
请记住设置填充区域!
事实证明,Android UI编辑器无法处理像设备这样的9补丁图像。这对我来说似乎是个错误。