0

我需要使用微调器作为菜单。但问题是,当我单击一个项目时,它会被选中并在该位置显示我想要避免的行为。其次,无论选择了哪些项目,我都需要第一个项目始终是标题,如下图所示:

  1. 正常情况下的微调器

    正常情况下的微调器

  2. 当用户点击微调器时

当用户点击微调器时

现在,如果用户点击任何项目标题不应更改,但应选择项目。我已经使用它实现了它,ListView但我认为我必须使用正确的 Android 组件(如果真的可能的话)。提前致谢。

我已经使用以下代码解决了上述问题,但需要使用微调器。

布局文件

    <RelativeLayout
        android:id="@+id/header_main"
        style="@style/layout_f_w"
        android:layout_alignParentTop="true"
        android:layout_centerInParent="true"
        android:background="@color/heading_color" >

        <TextView
            android:id="@+id/headingText"
            style="@style/layout_wrap"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="MATCH CENTER"
            android:textColor="@color/text_color_white"
            android:textSize="15sp"
            android:textStyle="bold" />

        <ImageButton
            android:id="@+id/matchcenter_menu"
            style="@style/layout_wrap"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@id/headingText"
            android:background="@android:color/transparent"
            android:paddingTop="20dp"
            android:src="@drawable/drp_down_menu" />
    </RelativeLayout>

……

    <ListView
            android:id="@+id/mainscreen_menu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:background="@android:color/black"
            android:cacheColorHint="#00000000"
            android:divider="@android:color/white"
            android:dividerHeight="1dp"
            android:drawSelectorOnTop="false"
            android:listSelector="@android:color/transparent" />

设置视图。

TextView headingText = (TextView)findViewById(R.id.headingText);
headingText.setTypeface(Utils.getCustomFont(LiveScoreCrowdScreen.this));
headingText.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            showMatchCenterMenu(v);
        }
    });

……

matcheCenterMenu = (ImageButton)findViewById(R.id.matchcenter_menu);
        matcheCenterMenu.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            showMatchCenterMenu(v);
        }
    });

……

mainscreenMenu = (ListView)findViewById(R.id.mainscreen_menu);

……

    public void showMatchCenterMenu(View btn) {
    ScreenMenuItemsAdapter adapter = null;
    mainscreenMenu = (ListView)findViewById(R.id.mainscreen_menu);
    adapter = new ScreenMenuItemsAdapter(LiveScoreCrowdScreen.this, getResources().getStringArray(R.array.livescorecard_menuitems));
    mainscreenMenu.setAdapter(adapter);
    mainscreenMenu.setVisibility(View.VISIBLE);

    mainscreenMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View row, int position, long id) {
            CCApplication.isMenuOpened = false;
                switch (position) {

                    case 0:// Refresh
                        //refresh screen
                        break;
                    case 1:// Highlights

                        //get highlights

                        break;

                    case 2:// Preferences

                        //get preferences
                        break;
                    case 3:// current time

                        // get current time
                        break;
                }
            mainscreenMenu.setVisibility(View.GONE);
        }
    });

}
4

1 回答 1

0

只是一个不合适的黑客解决方案:

在 onItemSelectedListener() 侧完成所有工作后,再次使用微调器设置适配器。IE

       spinner.setAdapter(your_adapter);
       spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView,
                View selectedItemView, int position, long id) {
             //Do works here 

            //atlast again load the same adapter
            spinner.setAdapter(your_adapter);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }

    });

它会在选择一个项目后加载相同的适配器并像以前一样向您显示。

于 2013-10-04T10:58:46.663 回答