我尝试更改文本颜色并将微调器中的项目对齐到它的中心我该怎么做
这是我的代码
String[] li={"1","2","3"};
final Spinner combo = (Spinner)findViewById(R.id.widget30);
ArrayAdapter<String> a = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, li);
combo.setAdapter(a);
Run Code Online (Sandbox Code Playgroud)
谢谢
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spin"
android:entries="@array/num"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="Click ME"
android:gravity="center"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/txtv"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Spin.java
package com.and.spin;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
public class spin extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView tv=(TextView)findViewById(R.id.txtv);
Button b=(Button)findViewById(R.id.btn);
final Spinner s=(Spinner)findViewById(R.id.spin);
b.setOnClickListener(new OnClickListener() …Run Code Online (Sandbox Code Playgroud) 我正在尝试在所有版本的Android上创建与Froyo相同的Spinners.为此,我正在使用HoloEverywhere.一些微调项目文本是多行,我希望它包装.
使用默认布局,android.R.layout.simple_spinner_dropdown_item或者HoloEverywhere的直接替换,可以对文本进行椭圆化处理,而不是将其包裹起来.
将HoloEverywhere的布局作为自定义布局的起点,singleLine设置为false,ellipsize设置为none,并layout_height设置为wrap_content无效,文本仍然被切断.
我可以将文本正确地包装在下拉列表TextView中LinearLayout,但是在Froyo设备上,这会弄乱所选项目的显示:

此方法适用于较新的设备.所有设备上的下拉项目布局都很好.但是当我使用自定义下拉项目布局时,Froyo会将这个奇怪的文本重叠.每个选择都会堆积在最后一个选项之上.
这个问题: Spinner不会包装文本 - 这是一个Android错误吗?关于Spinners中的文本包装建议只有这样才能从头开始重新创建样式而不继承,但这听起来很疯狂并且容易出现问题.
my_simple_list_item_1.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/android:text1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:ellipsize="marquee"
android:layout_gravity="center_vertical"
android:singleLine="false"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Java的:
import org.holoeverywhere.widget.Spinner;
spinner1.setAdapter(ArrayAdapter.createFromResource(this,
R.array.array_of_strings, R.layout.my_simple_list_item_1));
Run Code Online (Sandbox Code Playgroud) android styles android-layout android-spinner android-holo-everywhere
我知道如何制作一个警告对话框,但是我需要用一个微调器来制作一个,这样当它弹出时,这个人就可以选择发生什么.有没有人有一个与微调器的警报对话框的代码或知道任何好的教程?
提前致谢
我正在尝试制作一个具有分隔符的ActionBar微调器.我实现了一个SpinnerAdapter有2个项目视图类型(感谢getViewTypeCount).问题是我convertViews从另一种类型发送了一些.
这是我的SpinnerAdapter:
public abstract class SeparatorSpinnerAdapter implements SpinnerAdapter {
Context mContext;
List<Object> mData;
int mSeparatorLayoutResId, mActionBarItemLayoutResId, mDropDownItemLayoutResId, mTextViewResId;
public static class SpinnerSeparator {
public int separatorTextResId;
public SpinnerSeparator(final int resId) {
separatorTextResId = resId;
}
}
public abstract String getText(int position);
public SeparatorSpinnerAdapter(final Context ctx, final List<Object> data, final int separatorLayoutResId, final int actionBarItemLayoutResId,
final int dropDownItemLayoutResId, final int textViewResId) {
mContext = ctx;
mData = data;
mSeparatorLayoutResId = separatorLayoutResId;
mActionBarItemLayoutResId = actionBarItemLayoutResId;
mDropDownItemLayoutResId …Run Code Online (Sandbox Code Playgroud) 我想设计一个微调器,如下图所示:

我没有在旋转器中得到指向下方的箭头符号.我怎样才能做到这一点?
如果我做了如上所示的按钮设计,那么我必须编写额外的代码来获得与微调器类似的功能,就像Spinner没有的那样android:drawableRight="@drawable/arraodown",但是在按钮中我们有这个方法.
我有三个微调器的布局.它们在下拉列表中显示的选项不同.
在我的onCreateView我不得不安装微调的方法.在这个方法里面我有这样的东西:
mySpinner = (Spinner) view.findViewById(R.id.my_spinner);
ArrayAdapter<String> mySpinner =
new ArrayAdapter<String>(getActivity(), R.layout.background,
new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.spinner_one_data))));
mySpinner.setDropDownViewResource(R.layout.spinner_text);
mySpinner.setAdapter(mySpinner);
mySpinner.setOnItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)
正如我所说,我的另外两个旋转器几乎相同,但有不同的选择.
我知道onItemSelected在"第一次设置"中为每个微调器调用一次,所以我有一个标志来防止这个问题.有了这个标志解决方案,我的微调器正在按预期工作.
问题是当我在每个微调器中选择一个选项然后旋转屏幕.现在,onItemSelected被称为6次而不是我期待的3次(我设置了一个标志来管理3次呼叫的这种情况).
它为什么会发生,我应该怎么处理?
我需要将默认值文本"选择你的设备"值设置为我的微调器下拉列表,我把它作为列表项,所以它作为一个下拉列表项,我隐藏下拉列表,因为这我的下拉列表中有一个空白区域.
我该怎么做?
这是我用过的代码
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
/*Setup a Spinner*/
mToolbarSpinner = (Spinner) findViewById(R.id.spinner_toolbar);
/*Manage the spinner*/
mToolbarSpinnerNavigationItems = new ArrayList<SpinnerNavItem>();
mToolbarSpinnerNavigationItems.add(new SpinnerNavItem("Select your Seebo", R.drawable.deviceonline));
/*setting the mToolbarSpinnerNavigationItems to list_item_title_navigation.xml*/
mArrayAdapter = new ArrayAdapter(this, R.layout.list_item_title_navigation,mToolbarSpinnerNavigationItems){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// remember to inflate custom layout for spinner item
// then set anything you want here
// remember to use convertView.findViewById(), not just findViewById()
// this is an example …Run Code Online (Sandbox Code Playgroud) 我正在尝试测试动态生成的Spinner.我能够点击微调器然后我需要从列表中选择一个显示给定文本的选项(我从hierarchyviewer中发现PopupWindow显示但是无法获得所需的文本,这是在屏幕外) .微调器使用自定义对象的ArrayAdapter(下面的代码),
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner mySpinner = (Spinner) findViewById(R.id.my_spinner);
List<MyValue> list = Arrays.asList(
new MyValue("One", "1"),
new MyValue("Two", "2"),
new MyValue("Three", "3"),
new MyValue("Four", "4"),
new MyValue("Five", "5"),
new MyValue("Six", "6"),
new MyValue("Seven", "7"),
new MyValue("Eight", "8"),
new MyValue("Nine", "9"),
new MyValue("Ten", "10"),
new MyValue("Eleven", "11"),
new MyValue("Twelve", "12"),
new MyValue("Thirteen", "13"),
new MyValue("Fourteen", "14"),
new MyValue("Fifteen", "15"),
new MyValue("Sixteen", "16"),
new MyValue("Seventeen", "17"),
new MyValue("Eighteen", …Run Code Online (Sandbox Code Playgroud) android automated-tests ui-testing android-spinner android-espresso
是否可以调整Spinner下拉高度以填满整个屏幕.现在我有3个项目,我动态添加到微调器适配器,但这些只覆盖屏幕的一半.我现在拥有的是这样的:
我想要的是这样的:
我可以添加空项目,但这不能解决不同屏幕尺寸的问题
我试图在微调器上实现一个样式,但它没有用
<style name="MyCustomSpinner" parent="Widget.AppCompat.Spinner.DropDown">
<item name="android:dropDownHeight">match_parent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
UPDATE
我在动作栏和微调器之间有一个视图,所以我不能layout_weight=1用于我的微调器
android ×10
android-spinner ×10
android-ui ×1
convertview ×1
spinner ×1
styles ×1
ui-testing ×1