Xamarin Android:如何创建组合框

问题描述 投票:0回答:1

大家好,我叫谷口

我正在尝试在我的应用程序上创建一个创建表单,我希望插入一个组合框,该示例我看到的示例是下拉菜单,我想在单击时打开一个带有某些选项的窗口,我单击填充该字段。

例如:我有一个名为国家的字段,当我单击此字段时会打开一个窗口,其中包含一些国家供我选择。我选择的国家/地区将填写该字段。

如下图所示:http://www.mkyong.com/wp-content/uploads/2011/11/android-spinner-demo1.png

http://www.mkyong.com/wp-content/uploads/2011/11/android-spinner-demo2.png

http://www.mkyong.com/wp-content/uploads/2011/11/android-spinner-demo3.png

我找到了一个文档,但是在Java上,我需要在C#上做。https://www.mkyong.com/android/android-spinner-drop-down-list-example/

c# xamarin.android
1个回答
0
投票

我已经将示例代码从java转换为c#,并且可以正常工作。主要代码如下:

activity_main.axml

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner  
  android:id="@+id/spinner"  
  android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  android:spinnerMode="dialog"
  android:prompt="@string/country_prompt" />
<Spinner
    android:layout_marginTop="15dp"
    android:id="@+id/spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/btnSubmit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:text="Submit" />

MainActivity.cs

public class MainActivity : AppCompatActivity
{
    private Spinner spinner1, spinner2;
    private Button btnSubmit;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        addItemsOnSpinner1();

        addItemsOnSpinner2();

        addListenerOnButton();

    }

    public void addItemsOnSpinner1()
    {
        spinner1 = FindViewById<Spinner>(Resource.Id.spinner);
        spinner1.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinner_ItemSelected);
        var adapter = ArrayAdapter.CreateFromResource(this, Resource.Array.country_array, Android.Resource.Layout.SimpleSpinnerItem);
        adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
        spinner1.Adapter = adapter;
    }

    public void addItemsOnSpinner2()
    {
        spinner2 = (Spinner)FindViewById(Resource.Id.spinner2);
        List<String> list = new List<String>();
        list.Add("list 1");
        list.Add("list 2");
        list.Add("list 3");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            Android.Resource.Layout.SimpleSpinnerItem, list);  //simple_spinner_item
        dataAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);//simple_spinner_dropdown_item

        spinner2.Adapter = dataAdapter;
    }

    private void spinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
    {
        Spinner spinner = (Spinner)sender;
        string toast = string.Format("Selected country is {0}", spinner.GetItemAtPosition(e.Position));
        Toast.MakeText(this, toast, ToastLength.Long).Show();
    }

    private void addListenerOnButton()
    {
        btnSubmit = (Button)FindViewById(Resource.Id.btnSubmit);
        btnSubmit.Click += BtnSubmit_Click;

    }

    private void BtnSubmit_Click(object sender, EventArgs e)
    {
        Toast.MakeText(this,
            "OnClickListener : " +
            "\nSpinner 1 : " + (spinner1.SelectedItem) +
            "\nSpinner 2 : " + (spinner2.SelectedItem),
        ToastLength.Short).Show();
    }
}

strings.xml中

<string name="country_prompt">Choose a country</string>
<string-array name="country_array">
  <item>Malaysia</item>
  <item>United States</item>
  <item>Indonesia</item>
  <item>France</item>
  <item>Italy</item>
  <item>Singapore</item>
  <item>New Zealand</item>
  <item>India</item>
</string-array>
© www.soinside.com 2019 - 2024. All rights reserved.