android - 当我们点击android中的按钮时如何显示Spinner-List?

标签 android android-spinner

嗨,我最近接触了 android 技术,在我的应用程序中我有两个按钮(一个用于显示电影列表,另一个用于显示国家列表)

当我点击第二个按钮时,我想在微调器列表中显示电影列表,如下面的第一张图片所示。

但是根据我的代码,当我点击按钮时,第一个微调器出现了,我选择了任何一个项目并将其设置为我的按钮标题,但在选择微调器后仍然可见 B/w 两个按钮,就像我的第二个屏幕一样,如何删除它。

我该如何解决这个问题?

请帮我。

当我点击按钮时,我想直接显示微调器列表。

xml:-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:id="@+id/parentLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="Button1Action"
        android:text="CountiesList"/>

    <Spinner
        android:visibility="gone"
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/mainLayout"
        android:layout_alignParentRight="true"
        android:paddingRight="0dp"
        android:layout_marginTop="5dp"
        />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="Button2Action"
        android:text="MoviesList"/>

    <Spinner
        android:visibility="gone"
        android:id="@+id/spinner2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/mainLayout"
        android:layout_alignParentRight="true"
        android:paddingRight="0dp"
        android:layout_marginTop="5dp"
        />

</LinearLayout>

Activity :-
public class spinnerListProgramatically extends AppCompatActivity{

    String [] countriesList = {"india","usa","england"
    };

    String [] moviesList = {"fury","300 rise of an empire","troy"
    };
    Spinner spinner1,spinner2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spinnerlist_runtime);
    }

    public void Button1Action(View view){

        spinner1  = (Spinner)findViewById(R.id.spinner1);
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countriesList);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(dataAdapter);
        spinner1.setVisibility(View.VISIBLE);
    }

    public void Button2Action(View view){

        spinner2  = (Spinner)findViewById(R.id.spinner2);
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, moviesList);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(dataAdapter);
        spinner2.setVisibility(View.VISIBLE);
    }
}

enter image description here

--- enter image description here

最佳答案

为什么不删除 Spinner并且只有一个 Button反而。拥有 SpinnerButton两者,没有意义。

根据您显示的图像,您需要 PopupMenu :

public void Button2Action(View view){
    showFilterPopup(view);
}

private void showPopup(View v) {
    PopupMenu popup = new PopupMenu(this, v);
    // Inflate the menu from xml
    popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu());
    // Setup menu item selection
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.troy:
              Toast.makeText(MainActivity.this, "troy", Toast.LENGTH_SHORT).show();
              return true;
            case R.id.rise:
              Toast.makeText(MainActivity.this, "300 Rise of Empire", Toast.LENGTH_SHORT).show();
              return true;
            default:
              return false;
            }
        }
    });
    // Handle dismissal with: popup.setOnDismissListener(...);
    // Show the menu
    popup.show();
  }

您的 R.menu.popup将包含您需要的所有项目。

当您拥有一组静态数据时,此方法将很有用。

只需几个步骤,您就可以使其动态化。希望这可以帮助。

关于android - 当我们点击android中的按钮时如何显示Spinner-List?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36123746/

相关文章:

android - 在点击 View 下方显示下拉列表

java - 通过引用多个 Spinner 的 setOnItemSelectedListener 来传递 String 变量

java - 如何单击 AutocompleteTextView 列表上的事件并查询 sqlite。(我有一个示例代码。)

Android 小部件禁用 listitem 嵌套按钮 onclick

Android Ble 扫描回调未连续触发

android - Nexus 5/5x 上不显示微调器下拉箭头

android - Android 上的基本加密

java - Android Wear 2.0 的请求 - 响应 API?

java - Android 中的微调项目

java - AppCompatSpinner 的条目在第二次选择时不会打开 TimePickerDialog。请查看详情