2012-11-25 49 views
0

我想使用微調設置另外三個spinners的選擇,它們是使用資源中預定義的字符串數組動態更新的。微調選項不可見,直到點擊

雖然我已經使用其他優秀的建議,從stackoverflow得到這麼遠,我不知道爲什麼我的3更新的紡紗廠直到他們被點擊時才顯示隱形的選擇。

下面是主要代碼:

package com.example.bush; 
import com.example.bush.R; 

import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.AdapterView.OnItemSelectedListener; 

public class MainActivity extends Activity implements OnItemSelectedListener{ 
public final static String NAME_KEY = "com.example.bush.NAME"; 
int pos1, pos2; 
ArrayAdapter<CharSequence> adapter1, adp0,adp1; 
Spinner spinner1,spinner2,spinner3,spinner4, spinner5; 
EditText editText, num3, num4, num5, num6, num7, num8; 
int[] route1,route2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    spinner1 = (Spinner) findViewById(R.id.spinner_h_route); 
    spinner3 = (Spinner) findViewById(R.id.spinner_h1); 
    spinner4 = (Spinner) findViewById(R.id.spinner_h2); 
    spinner5 = (Spinner) findViewById(R.id.spinner_h3); 
    num3 = (EditText) findViewById(R.id.num_h1); 
    num4 = (EditText) findViewById(R.id.num_h2); 
    num5 = (EditText) findViewById(R.id.num_h3); 
    editText = (EditText) findViewById(R.id.edit_name); 

    ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this, R.array.route_array, android.R.layout.simple_spinner_item);adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner1.setAdapter(adapter1); 
    Log.i("Hostile Route Spinner", "spinner1"); 
    spinner1.setOnItemSelectedListener(this); 

} 

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    Log.i("AAA", "OnItemSelected"); 
    pos1=spinner1.getSelectedItemPosition(); 
    Log.i("Spinner 1 Position", Integer.toString(pos1)); 
    switch(pos1) 
     { 
     case 0: 
      adp0 = ArrayAdapter.createFromResource(this, R.array.first_array, android.R.layout.simple_spinner_item); 
      adp0.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
      spinner3.setAdapter(adp0);spinner4.setAdapter(adp0);spinner5.setAdapter(adp0); 
      break; 
     case 1: 
      adp1 = ArrayAdapter.createFromResource(this, R.array.second_array, android.R.layout.simple_spinner_item); 
      adp1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
      spinner3.setAdapter(adp1);spinner4.setAdapter(adp1);spinner5.setAdapter(adp1); 
      break; 
     } 
    } 

public void onNothingSelected(AdapterView<?> arg0) {} 

} 

這裏是.XML表格佈局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/scrolltest.xml" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 


    <TableLayout 
     android:id="@+id/TableLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:id="@+id/name_label" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:text="@string/label1" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText 
       android:id="@+id/edit_name" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" 
       android:hint="@string/edit_message" > 
      </EditText> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:id="@+id/label_h_route" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:text="@string/label2" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <Spinner 
       android:id="@+id/spinner_h_route" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:entries="@array/route_array" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Spinner 
       android:id="@+id/spinner_h1" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" /> 

      <EditText 
       android:id="@+id/num_h1" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" 
       android:inputType="number" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Spinner 
       android:id="@+id/spinner_h2" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" /> 

      <EditText 
       android:id="@+id/num_h2" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="number" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" /> 

     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow5" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Spinner 
       android:id="@+id/spinner_h3" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" /> 

      <EditText 
       android:id="@+id/num_h3" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="number" 
       android:width="0px" 
       android:gravity="center" 
       android:layout_weight="1" /> 

     </TableRow> 

    </TableLayout> 

</ScrollView> 

這裏是字符串資源:

<?xml version="1.0" encoding="utf-8"?> 

<resources> 

    <string name="app_name">Bush Calc</string> 
    <string name="menu_settings">Settings</string> 
    <string name="title_activity_main">Bush Calc</string> 
    <string name="edit_message">Hi there :)</string> 
    <string name="unit_prompt">Choose a unit</string> 
    <string name="route_hint">Choose the route.</string> 
    <string name="label1">Your name:</string> 
    <string name="label2">Attacking route:</string> 

    <string-array name="first_array"> 
     <item>Item 1</item> 
     <item>Item 2</item> 
     <item>Item 3</item> 
     <item>Item 4</item> 
     <item>Item 5</item> 
    </string-array> 

    <string-array name="second_array"> 
     <item>Item 6</item> 
     <item>Item 7</item> 
     <item>Item 8</item> 
     <item>Item 9</item> 
     <item>Item 10</item> 
    </string-array> 

    <string-array name="route_array"> 
     <item>First</item> 
     <item>Second</item> 
    </string-array> 

</resources> 

感謝您的幫助您可以提供使這些選項在微調器上可見!

回答

1

這是這樣,你可以微調設置適配器,試試這個

Spinner spinner = (Spinner)findViewById(R.id.spinner); 
spinner.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, R.array.route_array)); 
spinner.setOnItemSelectedListener(this); 
+0

使用 「createFromResource」 行需要輸入3個而不是2,所以不幸的是這並沒有爲我工作。 – Max

0

我前一段時間一個非常類似的問題,其中設備的默認樣式是非常愚蠢的集合。這樣forceground和backgrould的顏色在哪裏相等。所以你需要手動設置背景和強制顏色。

+0

奇怪的是,我爲所有的紡紗人員使用了同樣的紡紗風格。第一個微調器運行良好,並且如預期的那樣,但是動態變化的微調器不會,即使它們使用相同的樣式。你知道如果這是個問題,我會怎樣去改變背景和前景? – Max

1

問題是使用不正確的適配器資源。

adp0.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 

應該

adp0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

做到這就像你在一開始設定adapter1什麼時候。

更改所有...item_1line。所提供的佈局。

1

我也遇到過與其他下拉菜單,微調等相同的問題。我認爲有幾種解決方法,但我認爲最簡單的方法是在清單中定義/創建一個主題。我已經使用你的代碼,它的工作原理。

例如,在清單我添加:

<activity 
     android:name="com.example.invisablespinner.MainActivity" 
     android:label="@string/app_name" 
     => " android:theme="@style/Simple" > 

在佈局\值\ style.xml內的風格的XML。我補充說。

<style name="Simple"> 
    <item name="android:textSize">13sp</item> 
    <item name="android:textColor">#000000</item> <== make the text black 
    <item name="android:background">#ffffff</item> </style> 

定義背景顏色或它將是否textcolor將...就我通過我的代碼測試看到的那樣。

有很多方法可以調整它使它看起來不錯。全取決於你。

〜安:-)

1

我找到了解決方案!

中的樣式。XML

<style name="Simple" parent="@style/Theme.AppCompat"> 
    <item name="android:textSize">13sp</item> 
    <item name="android:textColor">#000000</item> 
    <item name="android:background">#ffffff</item> </style> 

中manifiest:

<activity 
    android:name=".Rescate" 
    android:label="@string/title_activity_rescate" 
    android:theme="@style/Simple" > 
</activity>