Android 带有文本和图标的微调器
我需要制作一个带有文本和图标的微调器。。我该怎么做?我现在才知道如何将同一图标放置到微调器的所有行上。。我需要在每一行放置不同的图标。这是main.xmlAndroid 带有文本和图标的微调器,android,text,icons,spinner,Android,Text,Icons,Spinner,我需要制作一个带有文本和图标的微调器。。我该怎么做?我现在才知道如何将同一图标放置到微调器的所有行上。。我需要在每一行放置不同的图标。这是main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layo
<?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:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
希望这有帮助。这是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:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
希望这有帮助。实现这一点的简单方法是使用使用创建的ArrayAdapter。第二个和第三个参数是每行布局的ID(可以在XML文件中定义),以及该布局中可以表示项目的文本字段的ID 例如,您可以定义如下布局(row.xml):
然后您可以像这样创建ArrayAdapter:
package com.exercise.AndroidCustomSpinner;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class AndroidCustomSpinner extends Activity {
String[] DayOfWeek = {"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.row, R.id.weekofday, DayOfWeek);
mySpinner.setAdapter(adapter);
}
}
package com.exercise.AndroidCustomSpinner;
导入android.app.Activity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
导入android.widget.Spinner;
公共类AndroidCustomSpinner扩展活动{
字符串[]DayOfWeek={“星期日”、“星期一”、“星期二”,
“星期三”、“星期四”、“星期五”、“星期六”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
微调器mySpinner=(微调器)findViewById(R.id.Spinner);
ArrayAdapter=新的ArrayAdapter(此,
R.layout.row,R.id.weekofday,DayOfWeek);
设置适配器(适配器);
}
}
注意调用ArrayAdapter(此,
R.layout.row,R.id.weekofday,DayOfWeek)
将行布局定义为R.layout.row
,文本字段显示数据R.id.weekofday
,以及数组DayOfWeek
中的数据
唯一的缺点是,您无法更改每个项目的图标。。。如果要这样做,您需要覆盖BaseAdapter.getView(),以便为微调器的每一行创建(或重用)一个视图,方法与ListView几乎相同。关于如何做到这一点,有上百个教程。简单的方法是使用使用创建的ArrayAdapter。第二个和第三个参数是每行布局的ID(可以在XML文件中定义),以及该布局中可以表示项目的文本字段的ID 例如,您可以定义如下布局(row.xml):
然后您可以像这样创建ArrayAdapter:
package com.exercise.AndroidCustomSpinner;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class AndroidCustomSpinner extends Activity {
String[] DayOfWeek = {"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.row, R.id.weekofday, DayOfWeek);
mySpinner.setAdapter(adapter);
}
}
package com.exercise.AndroidCustomSpinner;
导入android.app.Activity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
导入android.widget.Spinner;
公共类AndroidCustomSpinner扩展活动{
字符串[]DayOfWeek={“星期日”、“星期一”、“星期二”,
“星期三”、“星期四”、“星期五”、“星期六”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
微调器mySpinner=(微调器)findViewById(R.id.Spinner);
ArrayAdapter=新的ArrayAdapter(此,
R.layout.row,R.id.weekofday,DayOfWeek);
设置适配器(适配器);
}
}
注意调用ArrayAdapter(此,
R.layout.row,R.id.weekofday,DayOfWeek)
将行布局定义为R.layout.row
,文本字段显示数据R.id.weekofday
,以及数组DayOfWeek
中的数据
唯一的缺点是,您无法更改每个项目的图标。。。如果要这样做,您需要覆盖BaseAdapter.getView(),以便为微调器的每一行创建(或重用)一个视图,方法与ListView几乎相同。关于如何做到这一点,有上百个教程。可惜每行没有不同的图标,因为我认为这是使用这种东西的要点。代替使用新的row.xml布局,我只需使用android.R.layout.simple_list_item_1,并在扩展适配器中设置图标:
label.setCompoundDrawablesWithIntrinsicBounds(image_res_id,0,0,0)
太糟糕了,每一行没有不同的图标,因为我认为这是使用这种东西的要点。在使用新的row.xml布局的地方,我只使用了android.R.layout.simple\u list\u item\u 1
并在扩展适配器中设置图标:label.setcompoundDrawableswithintrisicbounds(image\u res\u id,0,0)
代替使用新的textandicon.xml布局,我只使用了android.R.layout.simple\u list\u item\u 1
,并在扩展适配器中设置图标:TextView label=(TextView)row.findViewById(android.R.id.text1);label.setText(getItem(position));`label.setCompoundDrawablesWithIntrinsicBounds(图像分辨率id,0,0,0)`代替使用新的textandicon.xml布局,我只使用了android.R.layout.simple\u list\u item\u 1
,并在扩展适配器中设置图标:TextView label=(TextView)row.findViewById(android.R.id.text1);label.setText(getItem(position));`label.setCompoundDrawablesWithIntrinsicBounds(图像分辨率id,0,0,0)`#试试看我最简单的方法
package com.exercise.AndroidCustomSpinner;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class AndroidCustomSpinner extends Activity {
String[] DayOfWeek = {"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.row, R.id.weekofday, DayOfWeek);
mySpinner.setAdapter(adapter);
}
}