OK, I'm trying to recycle advice given in these posts about centering an image programmatically without success. My app is basically working and consists of a spinner with a image and some TextViews below it. The content of these depends on the spinner position. What I would like is the image aligned centrally when the spinner is in its default position and aligned left when something has been selected. The layouts are defined in layout files, one for portrait and another for landscape and here is the part of my code that I'm struggling with:-
@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]);
}
}
Here are snippets from my layout files: activity_main.xml portrait view:
<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 landscape view:
<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" />