gpt4 book ai didi

android - 如何更改微调器的文本大小和方向

转载 作者:行者123 更新时间:2023-11-30 04:36:05 25 4
gpt4 key购买 nike

我需要更改微调器上显示的所选项目的文本大小和方向,但我还需要继续使用微调器的默认布局:android.R.layout.simple_spinner_item

为什么?因为如果我使用个性化布局,我无法在微调器上加载动态生成的字符串数组。这是 Android 的失败:S

有人可以帮帮我吗?

最佳答案

好吧,这有点棘手,但不是太难。

  1. 扩展 SimpleAdapter,创建自定义适配器。
  2. 确保您在这个新适配器中实现了 SpinnerAdapter。 (如果您使用的是 Eclipse,让它通过创建未实现的方法来帮助您)
  3. 实现 SpinnerAdapter 将强制您添加下拉 View 资源 xml 对象。静态添加它,或定义一个 setter。
  4. public View getView(int position, View convertView, ViewGroup parent) 内(这是您将自定义 View 返回给 Spinner 的地方),调用 parent.getSelectedItem() 查看它是否与列表中 位置 的项目相同。
  5. 如果是,请将字体设置得更大。如果不是,请将其设置为正常(不要忘记这样做,因为微调器会回收 View ,将较大的字体留在原处)。

要使用适配器,请从您的 Activity 中调用如下内容:

MyCustomSpinnerAdapter adapter = new MyCustomSpinnerAdapter(this, myListOfItems);
adapter.setDropDownViewResource(R.layout.my_dropdown_view_resource);
mySpinner.setAdapter(adapter);

要了解 google 是如何做到的,请查看 google codesearch here并搜索“Android ArrayAdapter.java”——点击 core/java/android/widget 链接,它会带你到包含所有各种适配器、接口(interface)和小部件的包,你需要解决剩下的问题。

祝你好运。

编辑:这是一个未经测试的第一次破解示例:

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;

import com.beget.consumer.R;

public class MyCustomSpinnerAdapter extends BaseAdapter implements SpinnerAdapter {

private String[] list;
private Context context;

public MyCustomSpinnerAdapter(Context context, String[] list) {
super();
this.list = list;
this.context = context;
// TODO Auto-generated constructor stub
}

@Override
public int getCount() {
return list.length;
}

@Override
public Object getItem(int position) {
//you need to add index safety here - make sure that position is a valid index
return list[position];
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if (convertView == null) {
convertView = context.inflate(R.layout.my_view_item, null);
holder = new ViewHolder();
holder.myView = (TextView) convertView.findViewById(R.id.beget_box_description);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();

}

if (list[position] == ((Spinner) parent).getSelectedItem()) {
holder.myView.setTextSize(25);
} else {
holder.myView.setTextSize(15);
}

holder.myView.setText(list[position]);

return convertView;
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
//change this if you want a different view for your dropdown list. It's the same as above, except you could
//inflate a different view if you wanted.
return getView(position, convertView, parent);
}

static class ViewHolder {
TextView myView;
}

}

关于android - 如何更改微调器的文本大小和方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6826708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com