我一直在玩这个游戏,但我似乎无法让它发挥作用。我想尽可能将图标移动到屏幕的最右边,但我找不到如何操作。通常,像这样的东西会起作用,但由于某些原因它不会。我认为这与显示多行xml的适配器有关,而不仅仅是一行。
rowlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="20px" >
</TextView>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="Loaded"
android:textSize="20px" >
</TextView>
<ImageView
android:id="@+id/icon"
android:layout_width="22px"
android:layout_height="22px"
android:layout_marginLeft="4px"
android:layout_marginRight="10px"
android:layout_marginTop="4px"
android:layout_gravity="right"
>
</ImageView>
</LinearLayout>
MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, values);
setListAdapter(adapter);
}
MySimpleArrayAdapter:
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public MySimpleArrayAdapter(Context context, String[] values) {
super(context, R.layout.rowlayout, values);
this.context = context;
this.values = values;
}
@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]);
String s = values[position];
if (s.startsWith("iPhone")) {
imageView.setImageResource(R.drawable.yes);
} else {
imageView.setImageResource(R.drawable.no);
}
return rowView;
}
}
感谢您提供的任何帮助
编辑:woops,通过图标我的意思是图像
答案 0 :(得分:1)
这是你想要实现的目标吗?:
<?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="wrap_content">
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Label"
android:textSize="20sp" />
<ImageView
android:id="@+id/icon"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_toLeftOf="@id/icon"
android:layout_toRightOf="@id/label"
android:text="Loaded"
android:textSize="20sp" />
</RelativeLayout>
请注意,绝不应将px用作任何尺寸。相反,使用dp作为宽度,高度,边距或填充等大小,并始终使用sp作为文本大小!!!
另外,为了获得更好的性能,请查看ListView适配器的ViewHolder模式。这是指适配器的getView()方法中的代码。
这有帮助吗?
答案 1 :(得分:0)
你必须使用RelativeLayout而不是LinearLayout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="20px"/>
<TextView
android:id="@+id/load"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_below="@id/label"
android:text="Loaded"
android:textSize="20px" />
<ImageView
android:id="@+id/icon"
android:layout_width="22px"
android:layout_height="22px"
android:layout_below="@id/label"
android:layout_marginTop="4px"
android:layout_alignParentRight="true"
/>
</RelativeLayout>