我正在研究Xamarin android
。我想要一个微调器出现在按钮上,或者微调器应该在按钮上,我可以说另一种方式。听起来很疯狂,但那是几天前我脑子里的东西!是的,我见过Spinner。可能是我要求的不是计划的一部分,但我想实现它!
更新2:让我用一个例子来解释。
考虑Web 2.0 scientific calculator。有一个
button π
。你长按按钮,你会得到一个下拉。您从下拉列表中选择的常量将显示在textbox
中。我想要与微调器相同的功能。差别在于我想要点击按钮而不是长按。希望我现在很清楚。
这是我尝试过的代码的一部分:
<!--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>
无论我使用Button
还是ImageButton
,都无关紧要!我很高兴其中任何一个。基本上我只想要一个下拉菜单弹出,只要我点击该按钮。谁能帮我这个?提前谢谢。
更新:当我处理York Shen's answer时,我得到了微调器占用的空白区域:
答案 0 :(得分:1)
我想要一个微调器出现在按钮上。
您可以使用Button
在Spinner
上加FrameLayout
:
<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>
然后,每次点击Button
时,您都可以使用spinner.PerformClick()
方法显示Spinner
:
bt_spinner.Click += (sender, e) =>
{
spinner.PerformClick();
};
更新:
我无法重现您的问题,但这是document的完整代码,您可以使用它并再试一次:
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();
}
答案 1 :(得分:0)
在您的XAML中,将微调器设置为不可见。在onClick事件中,设置更改可见性。如果你想让线性布局中微调器下方的东西移开,你可能需要在onClick上做更多的事情。