2013-04-22 7 views
5

Ich habe manuell zwei Spinner in der Aktionsleiste erstellt, indem Sie zuerst zwei Menüelemente in der main.xml-Datei erstellt haben. Mit der Linie gesetztZwei Spinner-Menüelemente in ActionBar width

cSpinner.setAdapter(ArrayAdapter.createFromResource(this, 
      R.array.category_data, 
      android.R.layout.simple_spinner_dropdown_item) 
      ); 

ich das Array Ressource für sie. Diese Dinge funktionieren tatsächlich, aber das Problem ist, dass die linke Spinner-Ressourcen-Kette so groß ist, dass nur ein kleiner Teil des rechten Spinneres zu sehen ist.

http://s1.directupload.net/images/130422/88wtvfft.png

Ich habe Dinge versucht, wie cSpinner.setLayoutParams(new Spinner.LayoutParams(60, 20)); oder "

ViewGroup.LayoutParams params = pView.getLayoutParams(); 
     params.width = 100; 
      cspinner.setLayoutParams(params); 

Aber keiner von ihnen arbeiten. Der zweite lässt sogar das Programm abstürzen. Kennen Sie jetzt einen Tipp, wie ich dieses Problem lösen kann?

+0

versuchen Sie, die Werte in der Layoutdatei des Drehfelds festzulegen. –

+0

Die beiden Spinner sind nicht wirklich Spinner in der Datei layout.xml, sie sind zwei Menüpunkte in menu.xml, daher kann ich ihnen keine Werte zuweisen. – Elektropepi

Antwort

10

für das Sie benutzerdefinierte Layout in ActionBar wie Below

enter image description here

enter image description here


Code hinzufügen müssen, ist hier

public class MainActivity extends Activity { 

    final String[] choices = { "Android", "iOS", "RIM" }; 

    private Spinner Spin1; 
    private Spinner Spin2; 

    @SuppressLint("NewApi") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       MainActivity.this, android.R.layout.simple_dropdown_item_1line, 
       choices); 
     final ActionBar actionBar = getActionBar(); 
     actionBar.setCustomView(R.layout.actionbar_item); 
     actionBar.setDisplayShowTitleEnabled(false); 
     actionBar.setDisplayShowCustomEnabled(true); 
     actionBar.setDisplayUseLogoEnabled(false); 
     actionBar.setDisplayShowHomeEnabled(false); 

     Spin1 = (Spinner) findViewById(R.id.spinner1); 
     Spin2 = (Spinner) findViewById(R.id.spinner2); 

     Spin1.setAdapter(adapter); 
     Spin2.setAdapter(adapter); 
    } 

} 

actionbar_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:gravity="center" 
android:orientation="horizontal" 
android:weightSum="5" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:src="@drawable/ic_launcher" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="2" 
    android:text="my App name" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="#000000" /> 

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" /> 

<Spinner 
    android:id="@+id/spinner2" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" /> 

</LinearLayout> 
+0

Danke, das funktioniert perfekt, genau das, was ich gesucht habe. – Elektropepi

+0

unverständlich WARUM actionBar.setCustomView (R.layout.actionbar_item); und davor können Sie setContentView (R.layout.activity_main); – duggu