【问题标题】:Spinner with Custom Text view cuts in Lollipop devices棒棒糖设备中带有自定义文本视图的微调器
【发布时间】:2017-01-10 19:49:17
【问题描述】:

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

下面是代码:

<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,我该如何解决这个问题?

【问题讨论】:

    标签: android textview spinner android-5.0-lollipop


    【解决方案1】:

    实际上我无法理解您的要求,但如果您想完全控制微调器,请使用此技术。

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

    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);
    }
    

    检查此代码并根据您的要求对其进行修改。如果您发现任何问题,我会在这里为您提供帮助。 :)

    【讨论】:

      【解决方案2】:

      我不知道为什么,但是当我添加 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>
      

      【讨论】:

        猜你喜欢
        • 2015-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        • 2016-02-11
        • 2018-09-01
        相关资源
        最近更新 更多