我正在开发一个Android应用程序,目前我有以下代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_main"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/display_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="25dp"
android:textSize="20pt"
android:textColor="#FFFFFF"
android:visibility="invisible"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp" >
</ListView>
</RelativeLayout>
和
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
private TextView tv;
private MediaPlayer player = null;
ListView listV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.display_result);
listV = (ListView)findViewById(R.id.listView1);
final Intent i = new Intent(this,BActivity.class);
String[] values = new String[] { "C 2 F", "F 2 C", "Currency"};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, values);
listV.setAdapter(arrayAdapter);
listV.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
int itemPosition = position;
if(itemPosition == 0)
{
i.putExtra("identify", "c2f");
startActivityForResult(i, 1);
if(player != null)
player.stop();
}
else if(itemPosition == 1)
{
i.putExtra("identify", "f2c");
startActivityForResult(i, 1);
if(player != null)
player.stop();
}
else if(itemPosition == 2)
{
i.putExtra("identify", "currency");
startActivityForResult(i, 1);
if(player != null)
player.stop();
}
}
});
}
protected void onDestroy()
{
super.onDestroy();
player.stop();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("result");
tv.setVisibility(View.VISIBLE);
tv.setText(result);
player = MediaPlayer.create(this, R.raw.sound);
player.start();
}
}
}
}
这一切都运行良好,但ListView显示非常小的黑色文本左对齐,我想将其更改为居中并增加大小,也有任何简单的方法将列表视图中的图片和文本包括在内。我搜索了很多但是它们都非常难以理解,请告诉我在代码中我需要做哪些更改才能编辑listView文本。
答案 0 :(得分:2)
您需要使用TextView
的其他布局。自定义以下布局以满足您的需求。您可以增加文本大小来更改文本颜色,并以您希望的方式自定义文本视图。
<强> row.xml。强>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="41dp"
android:text="TextView" />
</RelativeLayout>
然后
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.row,R.id.textView1, values);
对齐
答案 1 :(得分:1)
ListView的所有布局都由适配器给出。您正在使用简单的ArrayAdapter和simple_list_item_1(这是一个简单的TextView)。
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, values);
好处:正如你所见,这很容易。
坏事:除了字符串列表外,你做不了多少。
如果你想要包含图像,更多TextView或其他好东西,你必须创建一个自定义适配器,覆盖ArrayAdapter或另一个,作为BaseAdapter。
Here你可以找到Vogella的简单教程。
正如您所看到的,所有工作都是在getView方法中完成的,所有的“创建”都在这里完成。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
textView.setText(values[position]);
// change the icon for Windows and iPhone
String s = values[position];
if (s.startsWith("iPhone")) {
imageView.setImageResource(R.drawable.no);
} else {
imageView.setImageResource(R.drawable.ok);
}
return rowView;
}
在开始时,您必须“膨胀”(创建)该行。从该行开始,您将“找到”视图并分别在行的位置设置项目。
表现说明:
由于Android会回收行,因此您应该检查该行是否已经创建。因此,如果convertView为null,则在扩充和包装所有代码之前检查。
答案 2 :(得分:0)
以下是带有ImageView和TextView的 row.xml 。这是列表项目的外观。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="@dimen/item_height"
android:layout_width="match_parent">
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_image"
android:layout_width="60dp"
android:layout_height="60dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/item_image"
android:id="@+id/item_label"/>
</RelativeLayout>
然后你需要创建自定义适配器,例如ArrayAdapter
的{{1}}:
String
之后在你的Activity类中执行类似的操作:
public class SampleAdapter extends ArrayAdapter<String> {
private LayoutInflater layoutInflater;
public SampleAdapter(Context context, ArrayList<String> data) {
super(context, R.layout.adapter_deals_list_fragment, data);
this.layoutInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
String item = getItem(position);
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.row, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.imageView.setImageDrawable(new ColorDrawable(Color.parseColor("#ffaa66cc")));
viewHolder.textView.setText(item);
return convertView;
}
private class ViewHolder {
ImageView imageView;
TextView textView;
public ViewHolder(View view) {
imageView = (ImageView) view.findViewById(R.id.item_image);
textView = (TextView) view.findViewById(R.id.item_label);
}
}
}
结果,您的ListView项目看起来像填充彩色图像和文本。