我已经完成了关于"动态创建多个微调器的所有答案",但是创建的多个微调器超过了先前生成的微调器。我们尝试使用LayoutParams和params.setMargins,但是无法为每个微调器生成指定视图。
我的要求是生成" n"微调器,其中n根据要求指定。 在每个微调器生成彼此重叠的情况下部分工作的代码如下:
public class newstatusinfo extends AppCompatActivity {
List<String> values = new ArrayList<String>();
ArrayAdapter<String>a;
Spinner spin;
int a1=5,b1=5,c1=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.witnesslay);
spin=(Spinner)findViewById(R.id.spinner21);
LinearLayout.LayoutParams params = new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < 2; i++) {
values.add(String.valueOf(a1));
values.add(String.valueOf(b1));
params.setMargins(0,a1,0,b1);
System.out.println("a1:"+a1);
System.out.println("b1:"+b1);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android
.R.layout.simple_spinner_dropdown_item, values);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item;
spin.setAdapter(adapter);
spin.setLayoutParams(params);
System.out.println("i:"+i);
a1=a1+5;
b1=b1+5;
}
}}
屏幕截图如下:
我们需要的是像上面的图像一样一个接一个的多个微调器,每个都有一组特定的值。
答案 0 :(得分:3)
我怀疑这是否是你想要的。 enter image description here
你刚才说过
动态创建多个微调器
是否意味着java代码动态生成视图?如果是这样,请阅读我的代码。我认为使用MARGIN和正确显示Spinner之间没有关联关系。
public class newstatusinfo extends AppCompatActivity {
int a1 = 0, b1 = 5, c1 = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout rootView = new LinearLayout(this);
rootView.setOrientation(LinearLayout.HORIZONTAL);
for (int i = 0; i < 3; i++) {
Spinner spin = new Spinner(this);
rootView.addView(spin);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) spin.getLayoutParams();
params.width = LinearLayout.LayoutParams.WRAP_CONTENT;
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
spin.setLayoutParams(params);
List<String> values = new ArrayList<String>();
values.add(String.valueOf(a1));
values.add(String.valueOf(b1));
values.add(String.valueOf(c1));
System.out.println("a1:" + a1);
System.out.println("b1:" + b1);
System.out.println("c1:" + c1);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android
.R.layout.simple_spinner_dropdown_item, values);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapter);
spin.setLayoutParams(params);
System.out.println("i:" + i);
a1 = a1 + 5;
b1 = b1 + 5;
c1 = c1 + 5;
}
setContentView(rootView);
}
}
答案 1 :(得分:0)
首先,英语不是我的母语。可能存在一些语法错误和误解。我会尽力理解你的问题并回答他们。 :-D我们走了: 据我了解,你提出了两个问题:
1如何为纺纱厂设定STYLE&#39;箭头?
2如何存储所有微调器的值?
首先,回答关于STYLE的问题。我很遗憾地说我没有找到如何完美地设置箭头的样式。但我有两个建议:
1.1 您可以为微调器的箭头设置颜色。像那样:
int[][] states = new int[6][2];
states[0] = new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled};
states[1] = new int[]{android.R.attr.state_enabled, android.R.attr.state_focused};
states[2] = new int[]{android.R.attr.state_enabled};
states[3] = new int[]{android.R.attr.state_focused};
states[4] = new int[]{android.R.attr.state_window_focused};
states[5] = new int[]{};
int[] colors = new int[]{0xffffffff, 0xffffff00, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000};
ColorStateList csl = new ColorStateList(states, colors);
spin.setBackgroundTintList(csl);
或在Spinner的布局文件中将其声明为android:backgroundTint="#00ff00"
,用于Spinner。
如果您对上面的代码感到困惑。请谷歌“ColorStateList&#39;”这个词,然后你会理解它。
1.2 您可以将TextView放置在微调器所在的位置。将Spinner的click事件绑定到TextView。然后,您可以根据需要设置TextView的样式。
2存储值: 谈话很便宜,只是告诉你我的代码。
public class MainActivity extends AppCompatActivity {
private List<List<String>> spinnersValues = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initData();//store the values of all spinners
LinearLayout rootView = new LinearLayout(this);
rootView.setOrientation(LinearLayout.HORIZONTAL);
for (int i = 0; i < 3; i++) {
Spinner spin = new Spinner(this);
rootView.addView(spin);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) spin.getLayoutParams();
params.width = LinearLayout.LayoutParams.WRAP_CONTENT;
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
spin.setLayoutParams(params);
List<String> values = spinnersValues.get(i);//fetch the values of one of the spinners
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, values);
spin.setAdapter(adapter);
spin.setLayoutParams(params);
}
setContentView(rootView);
}
private void initData() {
List<String> fruits = new ArrayList<String>();
fruits.add("apple");
fruits.add("pear");
fruits.add("cherry");
fruits.add("grape");
List<String> furniture = new ArrayList<String>();
furniture.add("desk");
furniture.add("chair");
furniture.add("bench");
List<String> animals = new ArrayList<String>();
animals.add("dog");
animals.add("cat");
animals.add("cow");
animals.add("rabbit");
animals.add("horse");
animals.add("tiger");
animals.add("lion");
spinnersValues.add(fruits);
spinnersValues.add(furniture);
spinnersValues.add(animals);
}
}