2017-10-04 171 views
0

我正在處理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> 

我是否使用ButtonImageButton不要緊,對我!我對任何一個都感到滿意。基本上我只想要一個下拉菜單來彈出,只要我點擊那個按鈕。誰能幫我這個?提前致謝。

更新:當我的工作York Shen's answer,我通過微調佔領了這片空白:like this

回答

0

在XAML中,設置微調器將不可見。在您的onClick事件中,設置更改可見性。如果您希望線性佈局中微調器下面的東西移開,您可能需要在onClick上做更多的事情。

1

我想要一個微調器顯示在按鈕上單擊。

你可以把ButtonSpinner使用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(); 
}; 

Effect

更新:

我不能重現你的問題,但這裏是我完整的代碼從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(); 
} 
+0

燁但微調佔據的空間!我會把圖像放在帖子中。 –

+0

@AshishSrivastava,我已經更新了我的答案,請檢查一下,如果這無法解決您的問題,我們需要查看一些代碼並幫助您找出問題所在。 –

+0

Hi Shen!我用一個例子更新了我的問題。希望這次我有意義。謝謝你的幫助。 –