【问题标题】:how to allign spinner equal in width of edittext如何对齐微调器等于edittext的宽度
【发布时间】:2025-12-23 00:00:16
【问题描述】:

如何对齐 spinner 以在所有屏幕上显示相等的宽度?在我的代码spinner 在不同的屏幕上显示不同的宽度我该怎么办?我给定了长度

 android:layout_marginRight="45dp"
 android:layout_marginLeft="45dp"  

edittextspinnerspinner 在不同的屏幕中显示不同的宽度我该如何解决这个问题?我这是我的屏幕图像http://imgur.com/RtWNgNI 以下是我的完整屏幕源代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
android:orientation="vertical"
android:weightSum="6" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="55dp"
    android:layout_weight="0.5"
    android:orientation="horizontal"
    android:weightSum="1" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingBottom="10dp"
        android:src="@drawable/agappbg" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:layout_weight="0.2"
    android:orientation="horizontal"
    android:weightSum="1" >

    <EditText
        android:id="@+id/txtMobileNo"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="45dp"
        android:layout_marginRight="45dp"
        android:layout_weight="1"
        android:background="#ffffff"
        android:gravity="left"
        android:hint="@string/MobileNo"
        android:singleLine="true" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.2"
    android:orientation="horizontal"
    android:weightSum="1" >

    <EditText
        android:id="@+id/txtPinNo"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="45dp"
        android:layout_marginRight="45dp"
        android:layout_weight="1"
        android:background="#ffffff"
        android:gravity="left"
        android:hint="@string/PinNo"
        android:inputType="textPassword"
        android:singleLine="true" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.1"
    android:orientation="horizontal"
    android:weightSum="1" >

    <Spinner
        android:id="@+id/lgnspinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="-17dp"
        android:layout_marginLeft="45dp"
        android:layout_marginRight="45dp"
        android:layout_marginTop="-15dp"
        android:layout_weight="1"
        android:paddingBottom="12dp"
        android:paddingTop="12dp"
        android:prompt="@string/network_prompt" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_weight="0"
    android:orientation="horizontal"
    android:weightSum="4" >

    <Button
        android:id="@+id/btnLogin"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="45dp"
        android:layout_weight="1"
        android:background="@drawable/curvedplanebutton_small"
        android:text="Login"
        android:textColor="@drawable/button_text_color" />
</LinearLayout>

【问题讨论】:

  • 图片链接已损坏,请重新检查
  • imgur.com/RtWNgNI chk 这个
  • 没坏我只给半屏图片
  • 如果你真的想让一个视图在所有屏幕上都是固定大小的(我认为没有意义)你应该给它的 layout_width 属性加上 px 单位。前/android:layout_width = "120px"
  • 如果我给 120 固定在小尺寸设备的所有屏幕上都不相同是压缩

标签: android spinner


【解决方案1】:

这不是你的错,Spinner 的默认背景有这种图像(周围有透明填充)。您可以通过在Spinner 上设置android:background="#ffffff" 来查看自己,这样做会从Spinner 的侧面移除填充,您的问题会解决,但您会丢失Spinner 箭头。我建议您为Spinner 创建自己的drawable(因为您正在更改其他View 的背景),否则不同操作系统版本的默认背景会有所不同,您的实现似乎会失败。

此外,您在这个简单的布局中使用了这么多LinerLayouts。考虑一下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
android:orientation="vertical"
android:weightSum="100" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center_horizontal"
    android:layout_weight="30"
    android:paddingBottom="10dp"
    android:src="@drawable/ic_launcher" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="70"
    android:orientation="vertical"
    android:padding="16dp" >

    <EditText
        android:id="@+id/txtMobileNo"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_marginBottom="4dp"
        android:background="#ffffff"
        android:gravity="center_vertical"
        android:hint="MobileNo"
        android:padding="4dp"
        android:singleLine="true" />

    <EditText
        android:id="@+id/txtPinNo"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_marginBottom="4dp"
        android:background="#ffffff"
        android:gravity="center_vertical"
        android:hint="Pin no"
        android:inputType="textPassword"
        android:padding="4dp"
        android:singleLine="true" />

    <Spinner
        android:id="@+id/lgnspinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:background="#ffffff" />

    <Button
        android:id="@+id/btnLogin"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:text="Login" />
</LinearLayout>

</LinearLayout>

再次调整你的引用,以防你复制粘贴我的代码。

【讨论】:

  • 我建议您从以下站点生成您的主题,然后使用它并调整您的布局。调整后,它不会再次中断,因为您的backgrounds 对于不同的操作系统版本将是相同的。 android-holo-colors.com
  • 当然你会松开箭头,因为你不再使用带箭头的背景,而是使用简单的颜色值。这就是为什么我在上面评论并建议您创建自己的带有箭头的Spinner 背景。这样您的Spinner 就不会在不同的 Android 操作系统版本上改变形状。
【解决方案2】:

实际上你的代码是对的。它看起来与 EditText 框的大小不同,因为您在微调器中使用了默认背景。

如果你改变了它的背景颜色或图像,比如

android:background="@android:color/darker_gray"

你可以改变它的背景图片

android:background="@drawable/spinnerDropDownBackground" 

并确保图像是 9 路径,这样它就不会在大屏幕上浆糊

How to create 9 patch for spinner ?

你会发现你的代码是正确的。

如果你想使用默认背景,你必须改变你的代码

android:layout_marginRight="40dp"
android:layout_marginLeft="40dp" 

希望这会有所帮助

【讨论】:

  • 如果我给 android:layout_marginRight="40dp" android:layout_marginLeft="40dp" 在不同的屏幕尺寸中是不一样的
  • 如果我给微调器任何颜色不显示右下拉箭头
  • 您希望它与 EditText 框的大小相同还是在所有屏幕中固定大小?
  • 是的,如果我更改微调器颜色工作正常,但不显示微调器下拉箭头,但如果我使用默认微调器,则并非在所有屏幕中都固定
  • 你能回答我最后的评论,以便我可以帮助你