我尝试按照以下方式自定义微调器,其中图像是9补丁图像。
<Spinner
android:layout_width="fill_parent"
android:layout_height="50dp"
android:id="@+id/spinner"
android:textSize="20sp"
android:background="@drawable/image"
/>
结果如下:Spinner screenshot
图像完全隐藏了文本。如何使文字可见?
编辑:
如果我使用image1,我确认我可以在微调器上看到该文本。但是,如果我使用这个image2(由您真正创建),那么我看不到文本。我的9补丁图像似乎有问题。但我无法弄清楚是什么?
答案 0 :(得分:1)
try this code
layout:-
<Spinner
android:id="@+id/endmonthsp"
android:layout_width="140dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:gravity="center" />
Activity:-
ArrayList<String> month = new ArrayList<String>(Arrays.asList("Month",
"January", "February", "March", "April", "May", "june", "July",
"August", "September", "October", "November", "December"));
Spinner spinner5 = (Spinner) findViewById(R.id.endmonthsp);
startdatemonthadapter = new DateAdapter(this, R.layout.spinnerlayout,
month);
spinner1.setAdapter(startdatemonthadapter);
startdatemonthadapter
.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
Adapter:-
public class DateAdapter extends ArrayAdapter<String> {
public DateAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
this.context = context;
}
private Context context;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = convertView;
if (view == null) {
LayoutInflater inflate = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflate.inflate(R.layout.spinnerlayout, null);
}
TextView spinneritemTV = (TextView) view
.findViewById(R.id.spinneritemTV);
spinneritemTV.setText(getItem(position));
return view;
}
}
spinnerlayout:-
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:layout_marginBottom="50dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="50dp" >
<TextView
android:id="@+id/spinneritemTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="center"
android:padding="10dp"
android:text="Testing "
android:textColor="#868A8D"
android:textSize="18sp" />
</RelativeLayout>
答案 1 :(得分:0)
您需要按如下方式设置微调器的背景:
在你的布局xml中:
<Spinner
android:id="@+id/spinner1"
style="@style/spinner_style"
android:layout_width="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_height="45dp" />
现在在style.xml中为spinner添加一个样式,如下所示:
` <style name="spinner_style">
<item name="android:background">@drawable/spinner_bg</item>
<!--
<item name="android:layout_marginLeft">10dp</item>
<item name="android:layout_marginRight">10dp</item>
<item name="android:layout_marginBottom">10dp</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
-->
<item name="android:paddingLeft">5</item>
</style>`
现在在drawable中创建一个名为spinner_bg.xml的xml: `
<item><layer-list>
<item><shape>
<gradient android:angle="90" android:endColor="@android:color/transparent" android:startColor="@android:color/transparent" android:type="linear" />
<padding android:left="2dp" android:right="2dp" />
</shape></item>
<item>
<bitmap android:gravity="center_vertical|left" android:src="your background drawable for spinner here" />
</item>
</layer-list></item>
`
根据你的问题,spinner_bg.xml的下面部分就可以了。
`<item>
<bitmap android:gravity="center_vertical|left" android:src="your background drawable for spinner here" />
</item>`
多数民众赞成。
答案 2 :(得分:0)
像我一样,直接设置微调器背景确实没有错。当然,你不能拥有旋转器的不同“状态”。文本不可见,因为9补丁图像由于某种未知原因而被破坏。我重新创建了图像,现在可以在微调器上看到文本了。还有一件事:如果9补丁上没有定义“内容区域”,则文本将不可见。