Holo主题 - EditText和Spinner中的不同文本大小

5

我在默认的亮色Holo主题下,遇到了关于EditTextSpinner文本大小的问题。由于某种原因,默认情况下它们的大小不同。

假设我有以下示例布局:

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

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="EditText default" />

    <EditText
        style="@android:style/Widget.Holo.Light.Spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="EditText spinner style" />

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@android:array/imProtocols" />
</LinearLayout>

... 这将导致以下结果:

从截图中可以看到:

  1. Spinner中的文本大小(3)默认情况下比EditText(1)略小。
  2. 如果我将Spinner样式应用于EditText(2),则它的字体大小与Spinner相同。
  3. 由于某种原因,Spinner样式的EditText也没有任何左填充。

我想要实现的目标

我创建了一个自定义的日期时间选择器组件,它派生自RelativeLayout并包含两个EditText。单击后,第一个显示日期选择器对话框,第二个显示时间选择器对话框。

现在,我想将这两个EditText样式设置为类似于Spinner,类似于ICS Google日历,如下所示:

第二行是用于事件位置EditText。我已经将与From输入中相同的日期值输入其中,From输入是某种类型的View(可能也是EditText),单击后显示DatePickerDialog。

如您所见,FromTo输入中的文本大小与位置EditText中的文本大小相同,左填充也相同。

如何使EditText具有类似Spinner的外观,同时保持相同的字体大小和左填充?

在android样式XML文件中,我可以在哪里找到各种视图和小部件(此例中为EditText和Spinner)的实际默认值,例如textSize、padding等?


你可以在 android-sdk/platforms/android-NN/data/res/ 找到所有基本的 XML。如果只是样式问题(字体大小、填充、边距),那么很容易解决,但我记得 EditText 和 Spinner 的实际 图像资源 尺寸不同,这就是它们不能对齐的原因,或者可能是 Button 和 Spinner。 - dmon
@dmon 是的,我知道SDK XML文件实际上在硬盘上的位置,但我更想找到定义这些属性的具体文件和<style>元素。我在浏览所有样式继承层次结构时并不成功。 - Natix
你解决了这个问题吗?我也是这样... - user1365836
@user1365836 嗯,我手动将 paddingLeft 设置为 12dp,并将 textAppearance 设置为 ?android:attr/textAppearanceMediumInverse,看起来还不错,当然这不是最佳解决方案。 - Natix
2个回答

5

好的,既然没有其他人回答,这是我所做的:

我采用试错法确定EditText的实际文本大小和左内边距,然后手动设置这些参数:

<style name="PickerEditText" parent="@android:style/Widget.Holo.Light.Spinner">
    <item name="android:paddingLeft">12dp</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
</style>

这是一个不太优秀的解决方案,但似乎能够在系统中设定不同文字大小的情况下正常工作,所以我暂时坚持使用它。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接