2012-10-13 111 views
12

我嘗試了很多改變微調的下拉列表項的高度..但我不能得到很好的解決.. plz幫助我傢伙..如何改變下拉高度在轉

這裏是一個代碼 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> 

enter image description here

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

+0

檢查以下URL精確解: http://stackoverflow.com/questions/8878260/how-to-re-大小高度的項目在旋轉多選擇 – Chase1986

+0

你應該標記約翰的帖子作爲答案。 –

回答

0

您是否嘗試過類似android:layout_height="30dp"而不是fill_parent對於無論是在loginrowspinner.xml這些元素?

+1

s老闆它會改變spinner的高度它是沒有用的..我想下拉高度 –

+0

最後我得到了輸出老闆.. –

41

只需將其添加到您的適配器。

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+0

這是最簡單和最好的解決方案。謝謝。 –

+0

這應該是公認的解決方案! – Roel

+0

...這麼聰明的解決方案:) – Davidm176

6

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

<TextView 
    ... 
    android:id="@+id/textViewRowFacility" 
    android:minHeight="48dp" /> 
+0

我試着用上面的方法,並做了訣竅..+1 – user755499

+0

TextView來自哪裏Spinner? –

4

也許它可以幫助..

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

在適配器中添加此:convertView.setMinimumHeight(60);這對我有用。

1

在這樣的佈局文件夾將在下拉彈出填充創建自己的TextView

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

這個工作對我來說:)

1

您可以嘗試使用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; 
} 
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; 
     } 

    }; 
+0

你能解釋一下嗎?40 * cx.getResources()。getDisplayMetrics()。density''? – backslashN

+0

@backslashN,在爲Android編寫Java代碼時,不能使用dp單位,而必須以像素爲單位指定(不同於接受dp的XML)。如果您爲所有情況設置了40像素,那麼在具有很多像素的屏幕上,高度仍然會很小。這就是爲什麼我們使用此代碼來考慮當前設備密度 – kit