相关疑难解决方法(0)

如何在Android中自定义Spinner

我想在a的下拉列表中添加一个自定义高度Spinner,比如30dp,我想隐藏下拉列表中的分隔符Spinner.

到目前为止,我尝试实现以下样式Spinner:

<style name="spinner_style">
        <item name="android:paddingLeft">0dp</item>
        <item name="android:dropDownWidth">533dp</item>
        <item name="android:showDividers">none</item>
        <item name="android:dividerHeight">0dp</item>
        <item name="android:popupBackground">@drawable/new_bg</item>
        <item name="android:dropDownHeight">70dp</item>
        <item name="android:scrollbarAlwaysDrawVerticalTrack">true</item>
        <item name="android:dropDownSelector">@android:color/white</item>
 </style>
Run Code Online (Sandbox Code Playgroud)

我的微调器的代码是:

<Spinner
            android:id="@+id/pioedittxt5"
            android:layout_width="543dp"
            android:layout_height="63dp"
            android:layout_toRightOf="@+id/piotxt5"
            android:background="@drawable/spinner"
            style="@style/spinner_style"
            android:dropDownVerticalOffset="-53dp"
            android:spinnerMode="dropdown"
            android:drawSelectorOnTop="true"
            android:entries="@array/travelreasons"
            android:prompt="@string/prompt" />
Run Code Online (Sandbox Code Playgroud)

但似乎没有任何效果.

android android-layout android-spinner

134
推荐指数
4
解决办法
36万
查看次数

Spinner:获取状态或在打开时收到通知

是否可以知道a Spinner是开放还是关闭?如果有一些onOpenListener for Spinners会更好.

我试过像这样使用OnItemSelectedListener:

spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            executeSomething();

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            Log.d("nothing" , "selected");  
        }

    });
Run Code Online (Sandbox Code Playgroud)

我知道如果选择了某些东西,窗口将会关闭(在executeSomething()中).但是如果我在对话框外单击,我也不会收到通知,这也会关闭微调器

android android-spinner android-adapterview

46
推荐指数
3
解决办法
3万
查看次数

如何在 Spinner 中保持沉浸模式?

我使用沉浸式粘性模式来隐藏导航栏和操作栏:

@TargetApi(19)
private void setImmersiveMode() {
    if (Build.VERSION.SDK_INT >= 19) {
        View decorView = getWindow().getDecorView();
        int uiOptions = getImmersiveUiOptions(decorView);
        decorView.setSystemUiVisibility(uiOptions);
        ActionBar actionBar = getActionBar();
        if (null!=actionBar) {
            actionBar.hide();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Spinner被触摸时,navigationBar被示出和沉浸式模式是禁用的。

此解决方案适用于对话框:

dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
dialog.show();
dialog.getWindow().getDecorView().setSystemUiVisibility(
context.getWindow().getDecorView().getSystemUiVisibility());
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
Run Code Online (Sandbox Code Playgroud)

但是Spinner没有show()我可以覆盖的方法。

触摸微调器时如何防止系统 UI 显示?

编辑:这个问题是关于保持导航栏隐藏(BackButton、HomeButton 和RecentTasksButton)。我已经在用FLAG_FULLSCREEN

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);   
Run Code Online (Sandbox Code Playgroud)

android android-spinner android-immersive

6
推荐指数
1
解决办法
1195
查看次数