Сначала я проверил код из моего другого ответа, и он делает именно то, что вы описали, что вы хотели. (если я не понимаю, что вы просите). Вы определенно не хотите использовать android: layout_alignRight, который не , как в примере кода. Это будет просто держать поле с правой стороны экрана и не повлиять на просмотр текста вообще. В этом примере используется android:layout_toRightOf="@+id/TextForWhiteBox"
, что возможно из-за относительного расположения. Поскольку относительная компоновка позволяет размещать объекты по отношению к другим. Эта строка всегда помещает прямоугольник справа от текстового представления без пробелов.
Что касается изменения ориентации экрана:
При изменении ориентации создается новый экземпляр вида.
Вот простое решение.
//Add to oncreate in your Activity
private TextView textStatus;
textStatus = (TextView) findViewById(R.id.TextForWhiteBox);
// This get's the width of your display.
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;
// Now you know the screen orientation, and it's width. So just set the maxwidth of the text view to match the display width - the pixels of your white box.
textStatus.setMaxWidth(width - 32); // 32 is here because you already know the size of the white box. More logic is needed to dynamically get this value, because you would need to wait for the activity to be fully created.
}
Вот main.xml, который я использовал:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:id="@+id/TextForWhiteBox"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:text="This is a very very very very very very very very very very very very very very very very very very very long string."
/>
<View android:background="#ffffffff" android:layout_width="32px" android:layout_height="32px" android:id="@+id/view1" android:layout_toRightOf="@+id/TextForWhiteBox"></View>
</RelativeLayout>
Вам может понадобиться дополнительная логика для сохранения значений на экране.
Этот код был протестирован, вы должны быть в состоянии буквально скопировать и вставить его, чтобы работать так, как вы просили.
Также, в зависимости от вашей логики, вы можете использовать что-то вроде этого, чтобы вернуть ориентацию экрана.
int orient = getResources().getConfiguration().orientation;
Надеюсь, это поможет!
Если это помогло вам, пожалуйста, нажмите кнопку «Принять». =) Ура!