Android:如何在文本视图焦点上显示下拉选项?

时间:2012-06-13 19:37:24

标签: android user-interface android-widget

我想在Android文字短信应用中实现类似于“收件人:”功能的功能。当焦点位于文本字段时,其下方会显示3个按钮(最近,联系人和组)。

我一直在努力找出这个小部件是做什么的。我能想到的最接近的是显示一个带有3个按钮的弹出式对话框,但这并不相同。我也考虑过一个下拉框,但这也不一样。

感谢您的任何建议。

编辑:Android 2.2

2 个答案:

答案 0 :(得分:1)

有这样的布局:编辑文本和三个按钮:(注意定义为已经消失的水平布局,这意味着它不会显示。

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"</EditText>

<LinearLayout
    android:id="@+id/horizontal_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:id="@+id/horizontal_layout"
    android:visibility="gone">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

现在活动有点像这样:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.test);

    EditText edit = (EditText) findViewById(R.id.teste_editText1);
    final LinearLayout layout = (LinearLayout)findViewById(R.id.horizontal_layout);

    edit.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View paramView, boolean paramBoolean) {
            if (paramBoolean) {//if is focused
                layout.setVisibility(View.VISIBLE);
            } else {
                layout.setVisibility(View.GONE);                    
            }
        }
    });
}

答案 1 :(得分:0)

Android彩信应用中使用的实际小部件(AOSP附带的小部件)是MultiAutoCompleteTextViewdocs link),用于显示基于输入的建议。 Here's a link到他们在Froyo的该应用程序中使用的子类的源代码。

当然,如果您指的是特定设备上的应用程序,它可能不是应用程序的开源版本,但这仍然是SDK中的小部件,它提供了一个基于提示的弹出式列表打字。

HTH