ОК, я безуспешно пытаюсь переработать советы, данные в этих сообщениях, о программном центрировании изображения. Мое приложение в основном работает и состоит из счетчика с изображением и нескольких TextView под ним. Их содержимое зависит от положения счетчика. Я бы хотел, чтобы изображение было выровнено по центру, когда счетчик находится в положении по умолчанию, и выровнено по левому краю, когда что-то было выбрано. Макеты определены в файлах макетов, один для портрета, а другой для ландшафта, и вот часть моего кода, с которой я борюсь: -
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// The variable index identifies the position the spinner is in.
// TextView name, country and description... locks to the
// TextViews defined in the activity_main.xml layout files.
int index = parent.getSelectedItemPosition();
TextView name = (TextView) findViewById(R.id.name);
TextView country = (TextView) findViewById(R.id.country);
TextView description = (TextView) findViewById(R.id.description);
// Now we'll check to see if we're in the None Selected spinner
// position. If true we'll dump the name, country and
// description TextViews otherwise these will be shown.
if (index == 0) {
image.setImageResource(imgs.getResourceId(
spinner1.getSelectedItemPosition(), -1));
// Try and centre the image when none is selected
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) image
.getLayoutParams();
lp.addRule(RelativeLayout.CENTER_VERTICAL);
image.setLayoutParams(lp);
name.setVisibility(View.GONE);
country.setVisibility(View.GONE);
description.setVisibility(View.GONE);
} else {
image.setImageResource(imgs.getResourceId(
spinner1.getSelectedItemPosition(), -1));
// Try and left align the image when the spinner is NOT in
// the None Selected position.
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) image
.getLayoutParams();
lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
image.setLayoutParams(lp);
name.setVisibility(View.VISIBLE);
country.setVisibility(View.VISIBLE);
description.setVisibility(View.VISIBLE);
name.setText(leaders[index]);
country.setText(states[index]);
description.setText(descrip[index]);
}
}
Вот фрагменты из моих файлов макета: Activity_main.xml книжная ориентация:
<ImageView
android:id="@+id/leaderPhoto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/accessability"
android:scaleType="centerInside"
android:src="@drawable/ic_world1" />
Activity_in.xml альбомный вид:
<ImageView
android:id="@+id/leaderPhoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="false"
android:contentDescription="@string/accessability"
android:paddingLeft="8dp"
android:scaleType="center"
android:src="@drawable/ic_world1" />