Хорошо, я пытаюсь переработать совет, приведенный в этих сообщениях, о центрировании изображения программно без успеха. Мое приложение в основном работает и состоит из счетчика с изображением и некоторых TextViews под ним. Их содержание зависит от положения счетчика. Я бы хотел, чтобы изображение было выровнено по центру, когда счетчик находится в позиции по умолчанию и выровнен влево, когда что-то было выбрано. Макеты определены в компоновочных файлах, один для портретной и другой для ландшафта и здесь является частью моего кода, что я борюсь с: -Центр Android изображения программно
@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" />
Welthanks Anup, CENTER_IN_PARENT появляется на работу, когда приложение первый стартует, но после выбора что-то иное, чем положение прядильщика по умолчанию, а затем вернуться в положение по умолчанию это не то изображение начинает централизованно выравниваться, когда приложение запускается, перемещается влево, выровненное, когда что-то было выбрано, и остается влево, когда вы возвращаетесь в позицию None Selected. –
Это потому, что вы добавляете новое правило только при изменении индекса. Вы должны удалить старое правило при добавлении нового. Смотрите: http://stackoverflow.com/a/5110767/1369222 –
Спасибо Anup, еще не решен, но вы дали мне полезное преимущество. Понятно, что. –