我正在为Android 2.2编写一个应用程序,我正在使用一个图库来传播图像列表,然后用户可以单击该图像来浏览应用程序的其他部分。在纵向方向上,一切都是犹太的:图像正确显示(完全在我想要的屏幕中心);然而,在横向方向上,画廊中的所有图像奇怪地移动到屏幕中心左侧的固定距离。我几个小时以来一直在研究这个问题,但还没有找到解决方案。我希望一些Android大师可以帮助我解决这个奇怪的渲染问题。
MainMenuActivity.java相关代码段(图库所在的活动)
Gallery optionList = (Gallery)findViewById(R.id.mainMenuOptionList);
GalleryItem[] optionListItemIdArray = new GalleryItem[] {
new GalleryItem(R.drawable.icon_main_menu_option_list_blackboard, "Start Next Lesson",
"Start the next planned vocab lesson."),
new GalleryItem(R.drawable.icon_main_menu_option_list_index_cards, "Review Words",
"Manually look over old words."),
new GalleryItem(R.drawable.icon_main_menu_option_list_dice, "Play Vocab Games",
"Play games to reinforce knowledge."),
new GalleryItem(R.drawable.icon_main_menu_option_list_calendar, "View Lesson Plan",
"View the schedule for coming lessons."),
new GalleryItem(R.drawable.icon_main_menu_option_list_pie_chart, "View Performance Report",
"Evaluate your overall performance statistics."),
new GalleryItem(R.drawable.icon_main_menu_option_list_settings, "Manage Settings",
"Change and modify application settings.")
};
optionList.setAdapter(new GalleryImageAdapter(this, optionListItemIdArray));
注意:GalleryItem是一个带有图像资源ID,标题和描述的POJO。
GalleryImageAdapter.java:
public class GalleryImageAdapter extends BaseAdapter {
private Context context;
private GalleryItem[] galleryItemArray;
public GalleryImageAdapter(Context context, GalleryItem[] galleryItemArray) {
this.context = context;
this.galleryItemArray = galleryItemArray;
}
@Override
public int getCount() {
return galleryItemArray.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(galleryItemArray[position].getImageId());
imageView.setScaleType(ImageView.ScaleType.FIT_START);
imageView.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.WRAP_CONTENT, Gallery.LayoutParams.WRAP_CONTENT));
return imageView;
}
}
main_menu.xml的纵向版本
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainMenuLinearLayout"
android:background="#3067a8"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/mainMenuHeadingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:textColor="#ffffff"
android:textSize="50sp"
android:text="@string/main_menu_heading"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
<TextView
android:id="@+id/mainMenuSubHeadingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="15dip"
android:textColor="#ffffff"
android:textSize="15sp"
android:text="@string/main_menu_sub_heading"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
<Gallery
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainMenuOptionList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="20dip"
android:paddingBottom="10dip"
android:spacing="40dip"
/>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainMenuOptionListDetailLinearLayout"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/mainMenuOptionListLabelTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="25sp"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
<TextView
android:id="@+id/mainMenuOptionListDescriptionTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="15sp"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
</LinearLayout>
</LinearLayout>
main_menu.xml的横向版本
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainMenuLinearLayout"
android:background="#3067a8"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/mainMenuHeadingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:textColor="#ffffff"
android:textSize="50sp"
android:text="@string/main_menu_heading"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
<TextView
android:id="@+id/mainMenuSubHeadingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="15dip"
android:textColor="#ffffff"
android:textSize="15sp"
android:text="@string/main_menu_sub_heading"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
<Gallery
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainMenuOptionList"
android:layout_width="fill_parent"
android:layout_height="128dip"
android:paddingLeft="0dip"
android:paddingTop="5dip"
android:spacing="10dip"
/>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainMenuOptionListDetailLinearLayout"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/mainMenuOptionListLabelTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="25sp"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
<TextView
android:id="@+id/mainMenuOptionListDescriptionTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="15sp"
android:shadowColor="#555555"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="2"
/>
</LinearLayout>
</LinearLayout>
感谢您的时间!
答案 0 :(得分:0)
我发现渲染问题出现在我的GalleryImageAdapter中。问题是我为getView()方法创建的每个单独的图像视图选择了缩放方法。我使用的是ImageView.ScaleType.FIT_START缩放类型,它将图像缩放到缩放视图的左上角。我应该使用ImageView.ScaleType.FIT_CENTER,它在缩放视图中对缩放的图像进行中心化。
抱怨错误引导你的注意力。
- Sandile