如何为Spinner旁边的TextView加下划线(继续TextView的Spinner背景)

时间:2014-05-10 21:32:28

标签: android android-layout textview spinner styling

我正在尝试创建此用户界面:

hard to build UI http://i61.tinypic.com/ifzlz5.png

也就是说,左侧有一个TextView,右侧有一个Spinner。两者都用一行加下划线。 Spinner默认样式已经下划线(带有样式和背景图像)。因此,任务是以某种方式继续使用TextView。

需要你的帮助,伙计们!

4 个答案:

答案 0 :(得分:2)

// example main

public class MyActivity extends Activity {

    private Spinner spinner;
    private TextView text;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        spinner = (Spinner) findViewById(R.id.spinner);
        text = (TextView) findViewById(R.id.text);

        List<String> list = new ArrayList<String>();
        list.add("A");
        list.add("B");
        list.add("C");

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_spinner_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);


    }
}

//示例R.layout.custom_spinner_item

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:gravity="right"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee" />

//示例R.layout.main

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

    <!--stuff-->
    <View
        android:id="@+id/anotherField1"
        android:layout_width="match_parent"
        android:layout_height="40dp" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:spinnerStyle"
        android:addStatesFromChildren="true"
        >

        <TextView
            android:layout_alignParentLeft="true"
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text Left" />

        <Spinner
            android:id="@+id/spinner"
            android:layout_alignParentRight="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@null"
            />

    </RelativeLayout>

    <!--stuff-->
    <View
        android:id="@+id/anotherField2"
        android:layout_width="match_parent"
        android:layout_height="40dp" />

</LinearLayout>

结果:

pic1 pic2

答案 1 :(得分:1)

为微调器使用样式,图片中使用的样式为:

风格=&#34; @android:风格/ Widget.Holo.Light.Spinner&#34;

答案 2 :(得分:0)

您可以为Spinner编写自己的SpinnerAdapter(为此,您应extend BaseAdapter)。实现getView()以定义微调器显示为所选项的视图。实现getDropDownView()以定义微调器下拉列表显示的视图。您可以轻松地getView()返回类似LinearLayout的内容,以便在左侧和右侧显示文字。

答案 3 :(得分:0)

以下链接为我工作。

https://android--code.blogspot.in/2015/08/android-spinner-border-between-items.html

RES /抽拉/ spinner_item_border.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#ff2632"/>
        </shape>
    </item>
    <item android:bottom="2dp">
    <shape android:shape="rectangle">
        <solid android:color="#d7ffa2"/>
    </shape>
</item>

然后

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:background="@drawable/spinner_item_border"
    />