Xamarin.android 单击按钮即可启动微调器
我正在开发Xamarin android。我想要一个微调器显示在按钮点击上,或者微调器应该位于按钮的顶部,我可以这样说。听起来很疯狂,但这就是我几天前脑子里想的东西!是的,我见过。也许我所要求的不是计划的一部分,但我想实现它 更新2:让我用一个例子来解释 考虑一下这个问题。有一个Xamarin.android 单击按钮即可启动微调器,xamarin.android,Xamarin.android,我正在开发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();
}