具有自定义文本视图的微调器切入Lollipop设备

时间:2015-01-02 08:06:41

标签: android textview spinner android-5.0-lollipop

我有一个带有自定义文本视图的微调器:

以下是代码:

<Spinner
                android:id="@+id/spnr"
                android:layout_width="fill_parent"
                android:layout_height="30dp"
                android:prompt="@string/list" />

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#3D98E1"

在Android 5.0+(Lollipop设备)上,文字会缩小一半并显示。

我需要旋转器高度仅为30dp,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

实际上我无法理解你的要求,但是如果你想要完全控制微调器就可以使用这种技术。

您可以使用ListPopupWindow创建自定义微调器到TextView意味着单击TextView时ListPopupWindow像spinner下拉列表一样打开,您可以选择一个元素。如果您需要,我会帮助您。

ListPopupWindow numberList;
TextView spDays;
ArrayList<Map<String, String>>() listTrans;

in oncreate() spDays.setonclicklistner(this);spDays.setText("Select");
setNumberListSpinnerView();

in onclick(){
when spDays clicked :- numberList.show();
}


void setNumberListSpinnerView() {

numberList= new ListPopupWindow(this);
numberList.setAnchorView(spDays);

numberList.setOnItemClickListener((new AdapterView.OnItemClickListener() {
    @Override
    getListItem();
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Map map = listTrans.get(position);
        spDays.setText(map.get("circle_name").toString());
        circle_name = map.get("circle_name") + "";
        circle_id = map.get("circle_id").toString();
        circleList.dismiss();
        Log.d("Circle id:", circle_id + "");
        getRetails();

    }
}));
}


void getListItem(){
String[] numbers = {"1","2","3","4","5","6"};
listTrans = new ArrayList<Map<String, String>>();
LinkedHashMap<String, String> tran = new LinkedHashMap<String, String>();
for (String number : numbers) {
    tran.put("numbers", number);
    listTrans.add(tran);
}
SimpleAdapter adapter = new SimpleAdapter(AddRetailSurvey.this, listTrans,
        android.R.layout.simple_spinner_dropdown_item,
        new String[]{"numbers"},
        new int[]{android.R.id.text1});
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
numberList.setAdapter(adapter);
}

检查此代码并根据您的要求进行修改。如果您发现任何问题,我来这里是为了帮助您。 :)

答案 1 :(得分:0)

我不知道为什么但是当我添加1dp的虚拟填充时,文本不再被删除。

<style name="YourSpinnerStyle" parent="Widget.AppCompat.Spinner.Underlined">
    <item name="android:gravity">center|start</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:padding">1dp</item>
    <item name="android:textColor">@android:color/black</item>
    <item name="android:textCursorDrawable">@null</item>
    <item name="android:textSize">18sp</item>
</style>