繁体   English   中英

微调器显示黑色

[英]Spinner Shows Black Color

我对微调器设计有疑问。 我正在使用以下代码生成下拉微调器:

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

    LinearLayout layout = new LinearLayout(this);

    ArrayList < String > spinnerArray = new ArrayList < String > ();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter < String > spinnerArrayAdapter = new ArrayAdapter < String > (this,
        android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);

    layout.addView(spinner);

    setContentView(layout);
}

它显示如下: 在此处输入图片说明

如何去除阻塞微调器的黑色?

layout.addView(spinner);
setContentView(layout);

将视图动态添加到布局时。 您缺少一些配置。 这就是您看到黑匣子的原因。

试试下面的代码:

XML:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

活动:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            arraydata, android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    spinner.setAdapter(adapter);

在布局文件夹中创建一个布局文件simple_list.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:text="Sample Text"
    android:padding="5dp"
    android:gravity="center"
    android:textColor="@android:color/black"
    android:background="@android:color/white"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

并在arrayadapter中引用它:

ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,
                R.layout.simple_list, spinnerArray);

更新1添加此:

spinner.setBackgroundColor(ContextCompat.getColor(getApplicationContext(),android.R.color.white));

更新2而不是使用约束,而是在布局文件中使用Linear:

 <?xml version="1.0" encoding="utf-8"?> 
    <LineartLayout xmlns:android="schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto" 
android:id="@+id/linearLayout"
xmlns:tools="schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> </LinearLayout>

将id设置为LinearLayout(您的根视图),然后对该视图使用findViewById并将微调框添加到该rootView并删除setContentView(layout); 像这样更改它:

LinearLayout layout = new LinearLayout(this);

ArrayList<String> spinnerArray = new ArrayList<String>();
spinnerArray.add("one");
spinnerArray.add("two");
spinnerArray.add("three");
spinnerArray.add("four");
spinnerArray.add("five");

Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);

layout.addView(spinner);

setContentView(layout);

有趣的是,您的代码为我工作。 因此,请确保那里没有元素或与主题或颜色相关的其他代码。 这是屏幕截图

将linearlayout添加到您的activity_my布局中,并将其命名为linearLayoutContainer。 然后从代码中获得对它的引用。

LinearLayout container = findViewById(R.id.linearLayoutContainer);

Spinner spinner = new Spinner(this);

container.addView(spinner);

ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);

spinner.setAdapter(spinnerArrayAdapter);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM