Android微调器定制

Android微调器定制,android,spinner,android-spinner,Android,Spinner,Android Spinner,我需要使用微调器作为菜单。但问题是,当我点击一个项目时,它会被选中并显示在那个地方,这是我想要避免的行为。其次,我需要第一个项目始终是标题,无论选择了以下图像中的哪个项目: 旋转器处于正常状态 当用户轻触微调器时 现在,如果用户点击任何项目,则不应更改标题,但应选择项目。我使用ListView实现了这一点,但我认为我必须使用适当的Android组件(如果真的有可能的话)。 提前谢谢 我已使用以下代码解决了上述问题,但需要使用微调器 布局文件 <RelativeLayout

我需要使用微调器作为菜单。但问题是,当我点击一个项目时,它会被选中并显示在那个地方,这是我想要避免的行为。其次,我需要第一个项目始终是标题,无论选择了以下图像中的哪个项目:

  • 旋转器处于正常状态

  • 当用户轻触微调器时
  • 现在,如果用户点击任何项目,则不应更改标题,但应选择项目。我使用
    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>
    

    public void showmatchcenter菜单(查看btn){
    ScreenMenuItemsAdapter适配器=空;
    mainscreenMenu=(ListView)findViewById(R.id.mainscreen\u菜单);
    adapter=new ScreenMenuItemsAdapter(LiveScoreCrowdScreen.this,getResources().getStringArray(R.array.livescorecard_menuitems));
    主屏幕菜单。设置适配器(适配器);
    mainscreenMenu.setVisibility(View.VISIBLE);
    mainscreenMenu.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
    @凌驾
    public void onItemClick(AdapterView父级、视图行、整型位置、长id){
    CCApplication.ismenuOpen=false;
    开关(位置){
    案例0://刷新
    //刷新屏幕
    打破
    案例1://亮点
    //获得亮点
    打破
    案例2://偏好
    //获取首选项
    打破
    案例3://当前时间
    //获取当前时间
    打破
    }
    mainscreenMenu.setVisibility(View.GONE);
    }
    });
    }
    
    只是一个黑客解决方案,不是合适的解决方案:

    在MSelectedListener()中完成所有工作后,再次使用微调器设置适配器。 i、 e

    spinner.setAdapter(您的_适配器);
    spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
    @凌驾
    已选择公共视图(AdapterView父视图,
    视图选择编辑视图,整数位置,长id){
    //你在这里工作吗
    //至少再次加载相同的适配器
    spinner.setAdapter(您的_适配器);
    }
    }
    @凌驾
    未选择公共无效(AdapterView父视图){
    //你的代码在这里
    }
    });
    

    选择一个项目后,它将加载相同的适配器,并显示您之前的状态。

    您的尝试说明了什么?@PareshMayani:请再次查看问题。我已经发布了代码。是否要始终(在选择之后)显示匹配中心?还是什么?@RanjitPati:是的,我要在选择之前、之后和选择时显示匹配中心和关联的箭头图像。请把它当作一个标题。
        <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);
            }
        });
    
    }
    
           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
            }
    
        });