我以编程方式添加 Spinner ,使用自定义数组适配器类(扩展 ArrayAdapter )和我的微调器的自定义布局(包含ImageView和每行TextView。
一切正常,除了 Android Kit Kat :如果我点击我的Spinner,即使它包含正确的项目,它也不会显示下拉项目。我在Android 6.x和7.x上进行调试:它没有任何问题。 如果我使用自定义适配器和布局使用膨胀布局(我的活动的XML内部),我没有任何问题,但如果我以编程方式添加我的Spinner(使用外部XML布局),它不会工作
你知道Android 4.4.x中是否存在关于Spinner / Custom Adapter的已知兼容性问题吗? (如果它有用,我可以添加代码)
修改
我的活动中的部分代码:
TableLayout container = (TableLayout)findViewById(R.id.table);
LayoutInflater inflator = this.getLayoutInflater();
//Single row I wish to add programmatically
TableLayout row = new TableLayout(getApplicationContext());
inflator.inflate(R.layout.internal_layout_to_clone, row);
container.addView(row);
//Acquire Spinner
Spinner spinner = (Spinner)row.findViewById(R.id.spinner);
//[here I use Custom Adapter to populate my Select: values are shown properly]
R.layout.internal_layout_to_clone
是一个XML文件,其中包含一个包含多个TableRow的TableLayout,其中一行包含我的Spinner。
我不知道问题是我在另一个TableLayout中嵌套TableLayout,也许这在Android 4.4中管理不善
答案 0 :(得分:0)
我相信问题出在代码的某个地方,如果你可以上传它我会看看。 顺便说一句,我一直在使用一个外部库用于旋转器,这使得旋转器的使用更容易,它看起来比普通的更好。 https://github.com/ybq/Android-SpinKit
答案 1 :(得分:0)
我刚刚解决了我的问题。我用这种方式改变了我的外部布局:
TableLayout table = (TableLayout)findViewById(R.id.table);
LayoutInflater inflator = this.getLayoutInflater();
TableLayout row = new TableLayout(getApplicationContext());
inflator.inflate(R.layout.internal_layout_to_clone, row);
table.addView(row);
到此:
TableLayout table = (TableLayout)findViewById(R.id.table);
TableLayout row = (TableLayout)LayoutInflater.from(this).inflate(R.layout.internal_layout_to_clone, null);
table.addView(row);
我不知道为什么,也许某些涉及的方法与旧的Android版本不完全兼容,但现在它在每个测试版本上都能正常工作。
由于