Xamarin.android 单击按钮即可启动微调器

Xamarin.android 单击按钮即可启动微调器,xamarin.android,Xamarin.android,我正在开发Xamarin android。我想要一个微调器显示在按钮点击上,或者微调器应该位于按钮的顶部,我可以这样说。听起来很疯狂,但这就是我几天前脑子里想的东西!是的,我见过。也许我所要求的不是计划的一部分,但我想实现它 更新2:让我用一个例子来解释 考虑一下这个问题。有一个按钮π。你长按这个按钮,就会得到一个下拉列表。从下拉列表中选择的常数将显示在文本框中。我希望微调器具有相同的功能。只是不同的是,我希望它的按钮点击,而不是长按。希望我现在清楚了 这就是我尝试使用的代码部分: <!-

我正在开发Xamarin android。我想要一个微调器显示在按钮点击上,或者微调器应该位于按钮的顶部,我可以这样说。听起来很疯狂,但这就是我几天前脑子里想的东西!是的,我见过。也许我所要求的不是计划的一部分,但我想实现它

更新2:让我用一个例子来解释

考虑一下这个问题。有一个
按钮π
。你长按这个按钮,就会得到一个下拉列表。从下拉列表中选择的常数将显示在
文本框中。我希望微调器具有相同的功能。只是不同的是,我希望它的按钮点击,而不是长按。希望我现在清楚了

这就是我尝试使用的代码部分:

<!--main.axml-->

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:id="@+id/myTitle">

            <!--some stuff-->

            <ImageButton android:onClick="onClick"
            android:id="@+id/btnPi"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".33"
            android:padding="100dip"
            android:src="@drawable/pi" /> 
      <Spinner
            android:onClick="onClick"
            android:id="@+id/btnConst"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".33"
            android:prompt="@string/cons" />

     <!--And few other stuffs-->
</LinearLayout>

<!--Strings.xml-->

<string name="cons">const</string>
  <string-array name="ConsArray">
    <item>Angstrom star</item>
    <item>Faraday constant</item>
    <item>Planck constant</item>
    <item>Rydberg constant</item>
    <item>Stefan-Boltzmann constant</item>
    <item>electric constant</item>
    <item>mag. constant</item>
    <item>neutron mass</item>
  </string-array>

常数
埃星
法拉第常数
普朗克常数
里德堡常数
Stefan-Boltzmann常数
电常数
磁常数
中子质量
我是使用
按钮
还是使用
图像按钮
,对我来说都无关紧要!我对这两个都很满意。基本上我只需要一个下拉菜单弹出,只要我点击那个按钮。有人能帮我吗?提前谢谢


更新:当我工作时,微调器占用了这个空白:

在XAML中,将微调器设置为不可见。在onClick事件中,设置更改可见性。如果希望线性布局中微调器下方的内容移开,您可能需要在onClick中执行更多操作

我希望在单击按钮时显示微调器

您可以使用
框架布局
微调器上放置
按钮

 <FrameLayout
     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:prompt="@string/planet_prompt"

    />
    <Button
        android:id="@+id/bt_spinner"
        android:text="Spinner Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
    />
 </FrameLayout>

更新:

我无法重现您的问题,但以下是我的完整代码,您可以使用它并重试:

spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinner_ItemSelected);
var adapter = ArrayAdapter.CreateFromResource(this, Resource.Array.planets_array, Android.Resource.Layout.SimpleSpinnerItem);  

adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter = adapter;
bt_spinner.Click += (sender, e) =>
{
    spinner.PerformClick();
};

...

private void spinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
{
    Spinner spinner = (Spinner)sender;

    string toast = string.Format("The planet is {0}", spinner.GetItemAtPosition(e.Position));
    Toast.MakeText(this, toast, ToastLength.Long).Show();
}
spinner.ItemSelected+=neweventhandler(spinner\u ItemSelected);
var adapter=ArrayAdapter.CreateFromResource(这个,Resource.Array.planets\u数组,Android.Resource.Layout.SimpleSpinnerItem);
SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter=适配器;
bt_微调器。单击+=(发送方,e)=>
{
spinner.PerformClick();
};
...
私有无效微调器\u选定项(对象发送者,AdapterView.ItemSelectedEventArgs e)
{
微调器微调器=(微调器)发送器;
string toast=string.Format(“行星是{0}”,spinner.GetItemAtPosition(e.Position));
Toast.MakeText(this,Toast,ToastLength.Long).Show();
}

是的,但是旋转器占据了空间!我会把图片放到帖子里。@AshishSrivastava,我已经更新了我的答案,请检查一下,如果这不能解决你的问题,我们需要看一些代码,帮助你找出问题所在。你好,沈!我用一个例子更新了我的问题。希望这次我讲得通。谢谢您的帮助。@AshishSrivastava,我已经阅读了您的解释,但我无法重现您的问题“旋转器占用的空白”,我找不到原因,所以请您分享一些代码好吗?@AshishSrivastava,您的
活动是什么
风格的。
spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinner_ItemSelected);
var adapter = ArrayAdapter.CreateFromResource(this, Resource.Array.planets_array, Android.Resource.Layout.SimpleSpinnerItem);  

adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter = adapter;
bt_spinner.Click += (sender, e) =>
{
    spinner.PerformClick();
};

...

private void spinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
{
    Spinner spinner = (Spinner)sender;

    string toast = string.Format("The planet is {0}", spinner.GetItemAtPosition(e.Position));
    Toast.MakeText(this, toast, ToastLength.Long).Show();
}