我想在外部点击时隐藏微调器提示弹出窗口.如果提示弹出窗口打开并且用户按下主页键活动将最小化,因此当用户再次打开应用程序时,提示弹出窗口应该消失.
有没有办法实现这一目标.谢谢
编辑: - 不自定义提示弹出窗口.所以我无法隐藏它们onPause或onResume方法.
我在项目中使用appcompat v21,但我不喜欢它默认带来的新spinner.这个新的旋转器只带有一个向下的小箭头,指示它的存在.我更喜欢在4.x版本的android中使用的旧微调器,它带有类似EditText的功能,用于强调小部件的内容和右下角的箭头.
如何在使用appcompat v21的同时实现这种微调器的风格?
不受欢迎的微调风格:
不受欢迎的微调器的照片:

想要的微调器的照片:

我正在尝试Spinner在我的代码中扩展Android类来实现一个新函数,但由于某种原因,这不起作用.
这是扩展类:
import android.content.Context;
import android.widget.AdapterView;
import android.widget.Spinner;
public class CustomSpinner extends Spinner {
public CustomSpinner(Context context) {
super(context);
}
public void setSelectionByItemId(AdapterView<?> parent, long id){
for (int i = 0; i < parent.getCount(); i++) {
long itemIdAtPosition = parent.getItemIdAtPosition(i);
if (itemIdAtPosition == id) {
parent.setSelection(i);
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我实例化这个类的方式:
CustomSpinner spinner = (CustomSpinner) findViewById(R.id.sphofentries);
Run Code Online (Sandbox Code Playgroud)
这在运行时给我一个错误.
所有这些都是R.id.sphofentries在我的布局中声明为微调器.
但是现在,如果我声明sphofentries为一个CustomSpinner运行时错误,就在我将布局设置为活动时:
setContentView(R.layout.settings);
Run Code Online (Sandbox Code Playgroud)
另外我很确定问题是我需要声明sphofentries为CustomSpinner因为如果我这样做:
CustomSpinner spinner = new CustomSpinner(this);
spinner …Run Code Online (Sandbox Code Playgroud) 我在滚动视图中使用微调器,当我选择微调器时,滚动视图滚动到屏幕顶部.有没有办法阻止这个卷轴?
任何帮助表示赞赏.
谢谢.
我最近刚刚在我的Android应用程序中实现了holo主题.执行此操作后,我所拥有的任何微调器,其中下拉项是多行,不会将文本换行到多行.每个下拉项都保留在一行上并截断到一定长度.
这是我的用于微调器的下拉资源的xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="false"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="none" />
Run Code Online (Sandbox Code Playgroud)
这适用于ICS和holo主题之前的旧版Android.
还有其他人遇到过这个问题吗?
我正在使用微调器并想添加微调器 - 改变行为取决于状态(聚焦,按下)
示例项目在这里https://github.com/vovs/spinner_issue
我的代码:
activity_main.xml中
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:spinnerMode="dropdown"
android:dropDownSelector="@drawable/spinner_state" />
Run Code Online (Sandbox Code Playgroud)
spinner_state.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@color/black" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@color/red" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@color/red" />
<item
android:state_enabled="true"
android:drawable="@color/gray" />
</selector>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
Run Code Online (Sandbox Code Playgroud)
所以,如果我在模拟器Android 4.0.2 API 14中运行app并尝试选择一些项目或使用鼠标滚轮滚动没有任何效果,我在选择器中设置(当按下或滚动时 - 项目应该是红色的,但它是蓝色 - ICS颜色的默认值).
对于Android 2.2 API 8,当使用滚轮按下或滚动时(在这种情况下状态为聚焦)颜色为黄色[橙色](Android 2.2的默认颜色)
如何为微调器启用选择器?

当重写getDropDownView方法时,我遇到了一个奇怪的行为ArrayAdapter.我需要覆盖此方法,以便从我的自定义对象中显示正确的字符串值.多数民众赞成我的阵列适配器如何:
ArrayAdapter<NoteType> adapter = new ArrayAdapter<NoteType>(this, android.R.layout.simple_spinner_item, lstNoteTypes){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView lbl = (TextView) super.getView(position, convertView, parent);
lbl.setText(getItem(position).getName());
return lbl;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView lbl = (TextView) super.getView(position, convertView, parent);
lbl.setText(getItem(position).getName());
return lbl;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)
因此,当我覆盖时getDropDownView,我的Spinner看起来如下 - 项目高度非常小,这不是我想要的:

但是当我评论(或不覆盖)该getDropDownView方法时,它看起来没有默认样式,但我不能将所需的文本值注入下拉项.

请注意两个图像中项目的高度仅仅是因为覆盖getDropDownView.
有什么建议?或者我的代码中缺少什么?
我有一个spinner项绑定到一个数组适配器,任何时候可能有0或更多项.我希望微调器下拉列表一次只显示三个项目,其余项目可滚动.我已经尝试在具有固定宽度的布局中包装微调器但是微调器下拉列表仍然占据整个屏幕(如果阵列适配器中有很多项)以显示列表.
我想在WheelHorizontalView(包含在库中android-spinnerwheel)中设置单独的选项卡宽度和高度.并将该选项卡设置为支持选定/按下状态的drawable.
这可以在ViewPagerIndicator(with vpiTabPageIndicatorStyle)中完成,但我不能使用这个库.(这就是我用它做的vpiTabPageIndicatorStyle:http://pastebin.com/wB4vGMyJ)
我试过的是改变selectionDivider这个drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/drawable_daychooser_item_pressed" />
<item android:state_selected="true" android:drawable="@drawable/drawable_daychooser_item_selected" />
<item android:drawable="@drawable/drawable_daychooser_item_default" />
</selector>
Run Code Online (Sandbox Code Playgroud)
但那不起作用.我已经调查了wheel__attrs.xml但是我找不到另一个格式为drawable(引用)的属性.
这就是现在的情况:

这就是我想要的:

如果你想知道为什么我从这里切换ViewPagerIndicator到android-spinnerwheel这里:ViewPagerIndicator - 将TabPageIndicator设置为中心
我也在android-spinnerwheelGitHub页面上问过这个问题,但是经过4个月没有任何回复我决定在这里问一下.
我一直ProgressBar在我的应用程序中添加片段.我将其设置为两个主要片段(用作选项卡),如下所示:
ProgressBar在activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
设置ProgressBar VISIBLE和GONE:
spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);
spinner.setVisibility(View.VISIBLE);
spinner.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
这没有任何问题.我试图将ProgressBar另一个片段添加到另一个片段,其中包含WebView:
ProgressBar在fragment_article.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="info.androidhive.slidingmenu.ArticleFragment$PlaceholderFragment" >
<WebView android:id="@+id/webPage"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
设置可见性:
spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);
spinner.setVisibility(View.VISIBLE);
spinner.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
以与前一代码相同的方式设置可见性,但由于某种原因,这不是设置ProgressBar为GONE.不确定是什么问题.
我尝试使用Android中的clearAnimation建议,setVisbility在RelativeLayout中不起作用 …