将带下划线的微调器与编辑文本旁边的同一行对齐

时间:2016-02-06 15:36:04

标签: android android-edittext spinner

我有一个editText和一个带下划线的微调器。我试图在同一行的edittext旁边设置微调器。请帮帮我。 Spinner总是略高于edittext的行。

 <RelativeLayout
        android:id="@+id/relativeLayout4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/relativeLayout0"

        android:layout_alignParentLeft="true"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp">

        <ImageView
            android:id="@+id/ivRupee"
            android:src="@drawable/ic_rupee_new"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_centerVertical="true"  />
        <ImageView
            android:id="@+id/fake"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"/>


        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:id="@+id/editText"
            android:layout_toRightOf="@+id/ivRupee"
            android:layout_alignRight="@+id/fake"
            android:layout_marginRight="5dp"/>
        <Spinner

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/editText"
            android:gravity="center"
            android:layout_alignLeft="@+id/fake"
            android:layout_alignParentRight="true"
            android:id="@+id/spinner2"
            style="@style/Widget.AppCompat.Spinner.Underlined"/>

    </RelativeLayout>

我需要这样的东西: enter image description here

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我通过删除style="@style/Widget.AppCompat.Spinner.Underlined"并为微调器设置背景来解决问题android:background="@drawable/custom_spinner_background"

custom_spinner_background.xml

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="8dp"
    android:insetLeft="4dp"
    android:insetRight="4dp"
    android:insetTop="4dp">
    <selector>
        <item
            android:state_checked="false"
            android:state_pressed="false">
            <layer-list>
                <item
                    android:left="-8dp"
                    android:right="-8dp"
                    android:top="-8dp">
                    <shape android:shape="rectangle">
                        <stroke
                            android:width="1dp"
                            android:color="@color/colorAccent" />
                        <padding android:bottom="4dp" />
                    </shape>
                </item>
            </layer-list>
        </item>
        <item>
            <layer-list>
                <item
                    android:left="-8dp"
                    android:right="-8dp"
                    android:top="-8dp">
                    <shape android:shape="rectangle">
                        <stroke
                            android:width="2dp"
                            android:color="@color/colorAccent" />
                        <padding android:bottom="4dp" />
                    </shape>
                </item>
            </layer-list>
        </item>
    </selector>
</inset>

答案 1 :(得分:-1)

check this image

这样做只需添加一个项目微调器自定义

 arrayAdapter = new ArrayAdapter(this, R.layout.spinner_item, list)

并创建spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/spinner_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
tools:text="@tools:sample/lorem"
android:textColor="@android:color/black" />

微调器应如下所示:

  <Spinner
          android:id="@+id/spn"
          style="@style/Base.Widget.AppCompat.Spinner.Underlined"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          />

下面的代码将显示没有填充的项目: like this

只需添加另一项自定义:spinner_item_padding.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/spinner_item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left"
    android:paddingBottom="12dp"
    android:paddingLeft="12dp"
    android:paddingTop="12dp"
    tools:text="@tools:sample/lorem"
    android:textColor="@android:color/black" />

和java代码:

arrayAdapter = new ArrayAdapter(this, R.layout.spinner_item, list)
arrayAdapter.setDropDownViewResource(R.layout.spinner_item_padding)

check this result

吃水果和蔬菜