我使用带游标适配器的下拉微调器.它包含例如1 - 100项.我选择例如项目50.项目被选中.下次当我打开微调器时,第一个可见行是第50项.当我打开微调器时,我将如何实现它将聚焦到第一个项目/第一个可见项目将是项目1?
我的意思是像列表中的自动滚动一样,因此下拉列表中的第一个可见项目是第一个而不是一个.
我正在自定义ListView中加载手机通讯录.每行都是一个可检查的LinearLayout,包含CheckedTextView和另一个TextView.
我正在使用自定义ArrayAdapter提供列表视图.我的问题是我无法在getView()中控制CheckedTextViews.例如,当我尝试以下内容时
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if(row == null){
row = inflater.inflate(layout, parent, false);
}
CheckedTextView checkedTextView = (CheckedTextView) row.findViewById(R.id.checkedTextView);
checkedTextView.setText("A");
checkedTextView.setChecked(true);
return row;
}
Run Code Online (Sandbox Code Playgroud)
每当我滚动列表视图时,应该检查每个文本视图,但这不会发生.谁能告诉我怎么做?
编辑:在getView()中检查它是很重要的,我不能在setListAdapter()之后检查所有内容
EDIT2:这是显示每行视图的xml文件
<?xml version="1.0" encoding="utf-8"?>
<com.example.multiplecontacts.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<CheckedTextView
android:id="@+id/checkedTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:paddingBottom="0dp"
android:text="CheckedTextView"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/subTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Small Text"
android:paddingTop="0dp"
android:textAppearance="?android:attr/textAppearanceSmall" />
</com.example.multiplecontacts.CheckableLinearLayout>
Run Code Online (Sandbox Code Playgroud)
CheckableLinearLayout是一个自定义布局,它扩展了LinearLayout并实现了Checkable,如前所述.我从这里拿走了它
我正在动态创建一个新的微调器,如何更改列表背景颜色?
当前的背景颜色是深灰色:
当我将微调器的背景属性更改为白色时,我遇到了这种不必要的情况:
我希望它在活动中是透明的,只有当我打开微调器(按下它)时,我希望背景为白色.
这是我正在创建微调器的代码:
我正在创建适配器:
mAdapter = new ArrayAdapter<String>(getApplicationContext(),
R.layout.spinner, R.id.Language, lang);
LinearLayout layoutHolder =
(LinearLayout)findViewById(R.id.RegisterFormLayout);
Spinner spinner = new Spinner(getApplicationContext());
LayoutParams layParams= new
Spinner.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
spinner.setLayoutParams(layParams);
spinner.setAdapter(mAdapter);
spinner.setOnItemSelectedListener(new myOnItemSelectedListener());
if (lang != null)
spinner.setSelection(lang.intValue());
spinnerList.add(spinner);
layoutHolder.addView(spinner);
Run Code Online (Sandbox Code Playgroud)
我的spinner.xml布局是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/SpinnerLayout">
<TextView
android:id="@+id/Language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:background="#00ffffff"
android:padding="5dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
我不得不创建一个类似微调器的视图,它具有以下行为:
我已经成功制作了这个视图(下面的代码),但出于某种原因,在Android 7.1上,我让弹出菜单出现在视图的顶部(甚至重叠它和它上面的视图),而不是它下面,因为它应该.这是它的样子,它应该是什么样子:
由于它是相当多的代码和资源,我把它全部放在一个Github存储库(这里),但这里是代码的主要部分(我在修复它的尝试是在注释中):
FullSizePopupSpinner.java
public class FullSizePopupSpinner extends android.support.v7.widget.AppCompatTextView {
private static final long ANIMATION_DURATION = 150;
private int[] mItemsTextsResIds, mItemsIconsResIds;
private int mSelectedItemPosition = -1;
private SpinnerPopupWindow mPopupWindow;
private boolean mInitialized = false;
private OnItemSelectedListener mOnItemSelectedListener;
private Drawable mClosedDrawable;
private Drawable mOpenedDrawable;
public interface OnItemSelectedListener {
void onItemSelected(FullSizePopupSpinner parent, int position, String item, int previousSelectedPosition);
void onNothingSelected(FullSizePopupSpinner parent);
}
public FullSizePopupSpinner(final Context context) {
super(context);
init(context);
}
public FullSizePopupSpinner(final Context …Run Code Online (Sandbox Code Playgroud) 我尝试了很多来改变微调器的下拉项目高度..但我无法得到一个很好的解决方案.. PLZ帮助我们..
这是一个代码loginactivityview.xml
<Spinner
android:id="@+id/spinnerFacility"
android:layout_width="400dip"
android:layout_height="50dip"
android:layout_alignLeft="@+id/lpassword"
android:layout_below="@+id/lpassword"
android:layout_marginTop="32dip"
android:background="@drawable/location"
android:paddingLeft="10dip"
android:dropDownWidth="@style/dropDown"
android:minHeight="40dip"
android:typeface="monospace" />
Run Code Online (Sandbox Code Playgroud)
loginrowspinner.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textViewRowFacility"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="left"
android:paddingBottom="5dip"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:paddingTop="5dip"
android:text="Facility"
android:textColor="#000000"
android:textSize="20dip" >
</TextView>
Run Code Online (Sandbox Code Playgroud)

如何改变任何想法下降的高度..
我想为spinner添加一个图像,我尝试过:
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myImage" />
Run Code Online (Sandbox Code Playgroud)
但是使用这个代码,旋转器上的向下箭头的标志变得不可见,请告诉我如何解决这个问题!我想完全像这张图片一样

我在一个片段中有一个方法调用,当用户点击按钮时打开一个AlertDialog,在该对话框中我想向国家显示一个Spinner(西班牙,意大利,法国......)
我的微调器代码如下:
RestCountries restCountries = new RestCountries();
List<RestCountries.Datum> countries = restCountries.data;
String mCities ="";
ArrayList<String> citiesArrayList = new ArrayList<>();
for(RestCountries.Datum data : countries){
mCities = data.name;
citiesArrayList.add(mCities);
}
ArrayAdapter spinnerAdapter = new ArrayAdapter(getActivity(),android.R.layout.simple_spinner_dropdown_item, citiesArrayList );
mCountrySpinner.setAdapter(spinnerAdapter);
Run Code Online (Sandbox Code Playgroud)
打开对话框后,微调器显示为emphy.
在我得到的logcat上
Run Code Online (Sandbox Code Playgroud)Could not find class 'android.widget.ThemedSpinnerAdapter', referenced from method android.support.v7.widget.AppCompatSpinner$DropDownAdapter.<init>
关于我做错了什么的任何想法
我正在创建一个spinner,我已经添加了一个OnItemSelectedListener.但是我注意到它会在创建时触发.现在我想知道是否有办法忽略/丢弃它.
我知道我可以使用一个boolean值,但这有点"脏".
在我目前的项目中,我已经处理过spinner类,它几乎可以从各个方面进行定制.因此,当我处理它时,我已经获得了一些详细的方面.所以我将从它显示为什么它有缺陷的部分开始.
1_T在弹出窗口/布局/对话框created-shows(布局膨胀)事件中没有默认侦听器.有一些解决方法,如微调器上的ontouch监听器,然后检查是否在旋转器区域发生触摸完成,然后你知道弹出窗口将显示但仍然不可靠,因为你可以用异步任务填充弹出窗口.
2_再次选择相同索引时,不会触发项目选定事件.这真的很烦人,因为我可能会根据其他条件更新适配器,这将改变当前选择和列表顺序等...当然有一种解决方法,通过创建自己的微调器类并将其添加到xml中,如com.myproject.customspinner等......(Spinner:onItemSelected在所选项目保持不变时不被调用)
3_Spinner没有可用的功能 OnClickListener和OnItemLongTouchListener事件.
4_Changing Spinner DropDown列表divider元素的属性(如颜色)比更改所有dropdrown和spinner的背景视图本身需要更多的劳动,这是非常荒谬的.
5_Spinner这个名字本身很荒谬=))).
那么我可以用什么而不是Spinner?哪种方式最好?
我在两个不同的活动中有两个android spinner下拉列表.但是两个微调器都有来自同一个sourec的相同数据.我想根据第一个活动的位置改变第二个Activity的位置.如何解决这个问题?
更新的代码:
第一项活动:
public class ServiceRequest extends BaseActivity implements OnItemClickListener {
private List<Item> customerList = new ArrayList<Item>();
private SpinnerAdapter adapter;
public static final String EXTRA_INTENT_CUSTOMER_LIST ="extra_intent_customer_list";
public static final String EXTRA_INTENT_SELECTED_ITEM = "extra_intent_selected_item";
private List<Item> items;
Spinner spin;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLayoutInflater().inflate(R.layout.service_request, frameLayout);
;
);
System.out.println("Selected item " Button login = (Button) findViewById(R.id.booking);
final String message = autoCompView.getText().toString();
//Create the bundle
login.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
{
if(customerList.isEmpty()) return;
Item selectedItem = …Run Code Online (Sandbox Code Playgroud) android listadapter android-intent android-spinner android-bundle