我正在尝试使用微调器来设置另外三个微调器的选择,这些微调器使用资源中的预定义字符串数组动态更新。
虽然我已经使用了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>
以下是String资源:
<?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>
感谢您提供的任何帮助,以便在微调器上显示这些选项!
答案 0 :(得分: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);
答案 1 :(得分:1)
问题是使用了错误的适配器资源。
adp0.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
应该是
adp0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
这样做就像你在开头设置adapter1
时所做的那样。
更改所有...item_1line
。布局到提供的布局。
答案 2 :(得分:1)
我遇到了与其他drop菜单,微调器等相同的问题。我认为有几种解决方法,但我认为最简单的方法是在清单中定义/创建一个主题。我已经使用了你的代码,但它确实有用。
例如,在我添加的清单中:
<activity
android:name="com.example.invisablespinner.MainActivity"
android:label="@string/app_name"
=> " android:theme="@style/Simple" >
在布局\ values \ 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>
定义背景颜色,或者你的文本颜色是否......就我在代码测试中看到的那样。
有很多方法可以调整它以使它看起来不错。全取决于你。
〜安: - )
答案 3 :(得分:1)
I've found the solution!!!
in the styles.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>
the in the manifiest:
<activity
android:name=".Rescate"
android:label="@string/title_activity_rescate"
android:theme="@style/Simple" >
</activity>
答案 4 :(得分:0)
我前段时间有一个非常类似的问题,其中设备的默认样式非常愚蠢。使forceground和backgrould颜色相等。所以你需要手动设置背景和力地颜色。