17

我尝试了很多来改变微调器的下拉项目高度..但我找不到一个好的解决方案..请帮帮我..

这是一个代码 loginactivityview.xml

       <Spinner
         android:id="@+id/spinnerFacility"
         android:layout_width="400dip"
         android:layout_height="50dip"
         android:layout_alignLeft="@+id/lpassword"
         android:layout_below="@+id/lpassword"
         android:layout_marginTop="32dip"            
         android:background="@drawable/location" 
         android:paddingLeft="10dip"               
         android:dropDownWidth="@style/dropDown"  
         android:minHeight="40dip"     
         android:typeface="monospace" />

loginrowspinner.xml

  <?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" >

  <TextView
    android:id="@+id/textViewRowFacility"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="left"
    android:paddingBottom="5dip"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
    android:paddingTop="5dip"
    android:text="Facility"
    android:textColor="#000000"
    android:textSize="20dip" >
</TextView>

在此处输入图像描述

如何改变下拉任何想法的高度..

4

11 回答 11

61

只需将其添加到您的适配器。

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
于 2012-12-18T09:52:21.737 回答
8

也许它可以帮助..

ArrayAdapter<String> yourSpinnerAdapter = new ArrayAdapter<String>(this,
                R.layout.spinner_item, yourItem) {

        @Override
        public View getDropDownView(int position, View convertView,
                ViewGroup parent) {
            convertView = super.getDropDownView(position, convertView,
                    parent);

            convertView.setVisibility(View.VISIBLE);
            ViewGroup.LayoutParams p = convertView.getLayoutParams();
            p.height = 100; // set the height
            convertView.setLayoutParams(p);

            return convertView;
        }
    };
于 2013-07-22T04:32:17.663 回答
7

在 loginrowspinner.xml 中,添加android:minHeight="48dp"TextView元素。

 <TextView 
     ...
     android:id="@+id/textViewRowFacility"
     android:minHeight="48dp" />
于 2013-01-17T05:22:15.433 回答
4

在这样的布局文件夹中创建您自己的文本视图,它将在下拉弹出窗口中填充

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:ellipsize="marquee"
android:singleLine="true"
android:textSize="18sp"
android:textAlignment="inherit" />

注意我提供了

android:layout_height="60dp"

android:paddingLeft="20dp"

并将其用于您的微调器,就像这样

Spinner dropdown = (Spinner)findViewById(R.id.sosMode);
String[] items = new String[]{"Date", "Travelling alone"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_dropdown_list, items);
dropdown.setAdapter(adapter);

这对我有用:)

于 2014-05-01T22:05:30.850 回答
2

你可以试试用dps。

@Override   
public View getDropDownView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    TextView textview = (TextView)inflater.inflate(android.R.layout.simple_spinner_item, null);

    textview.setText(alOpcion.get(position).getOpcionName());

    DisplayMetrics metrics = parent.getResources().getDisplayMetrics();
    float dp = 40f;
    float fpixels = metrics.density * dp;
    int pixels = (int) (fpixels + 0.5f);

    textview.setHeight(pixels);

    return textview;
}
于 2015-04-11T07:45:28.913 回答
0

您是否尝试过类似的东西,android:layout_height="30dp"而不是fill_parentloginrowspinner.xml 中的任何一个元素?

于 2012-10-13T05:58:16.277 回答
0

将此添加到您的适配器中: convertView.setMinimumHeight(60); 这对我有用。

于 2013-12-05T13:38:32.237 回答
0

正如人们所说,最好的方法是添加

    android:minHeight="48dp"

到 .xml。但是,如果您想以编程方式执行此操作,请使用:

    mspinner.setMinimumHeight(48);

mspinner 是您的微调器的名称, 48 是选项的新高度。

于 2019-09-09T16:40:14.043 回答
0

ArrayAdapter 类中的重写方法

@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View view = super.getDropDownView(position, convertView, parent);
    view.getLayoutParams().height = 50;
    return view;
}
于 2018-07-20T10:45:14.457 回答
0

//这也可能有帮助:

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, dataForAdapter) {


        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            v.setMinimumHeight((int) (40*cx.getResources().getDisplayMetrics().density));
            v.setBackgroundColor(Color.rgb(222, 222, 222));


            return v;
        }

    };
于 2016-09-15T10:16:40.970 回答
0

陷入同样的​​问题。发现以下解决方案对我有用:

 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
        setSpinnerDropDownHeight()
    } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            mBinding?.included?.spinn?.getViewTreeObserver()?.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
                @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
                override fun onGlobalLayout() {
                    mBinding?.included?.spinn?.dropDownVerticalOffset = mBinding?.included?.spinn?.getDropDownVerticalOffset()!! + mBinding?.included?.spinn?.getHeight()!!
                    mBinding?.included?.spinn?.viewTreeObserver!!.removeOnGlobalLayoutListener(this)
                }
            })

            mBinding?.included?.spinn?.dropDownVerticalOffset = 10
        }
    }

希望它可以帮助某人!!!!

谢谢

于 2018-07-26T13:55:49.930 回答