TextView прокручивается в альбомной ориентации, но отображается в полный рост в портретной ориентации - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу, чтобы мой TextView можно было прокручивать в альбомной ориентации, но показывать в полный рост в портретной ориентации.Если я изменю высоту TextView, я получу полосу прокрутки, но получу ее как в альбомной, так и в портретной ориентации, см. Скриншот: enter image description here

В портретной ориентации достаточно места для растяженияTextView на полную высоту.

Но если я растяну TextView в книжной ориентации до его полной высоты (чтобы весь контент отображался), текст будет перекрывать другие элементы (см. Ситуацию 2) в горизонтальной ориентации илиесли я переместу его, он будет вне поля зрения и не будет никакой полосы прокрутки, которая делает текст прокручиваемым (см. Ситуацию 3).

enter image description here

enter image description here

Я хочу добиться того, чтобы TextView в альбомной ориентации был похож на Ситуацию 1 (с прокруткой), а в портретной ориентации - как на Ситуацию 2 (полное содержание).

Можно ли достичь этого без использования кода Java?Или я должен использовать if / else statemants?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы можете сделать это с помощью XML, создав две папки ресурсов макета - одну для портрета и другую для ландшафта.Затем оберните свой XML с помощью ScrollView, как показано ниже:

<ScrollView>
</ScrollView>

Все макеты, включенные в вышеупомянутый ScrollView, будут иметь возможность прокрутки на экранах разных размеров, если экран не может содержать все виды одновременно.Примечание: XML, который вы определяете внутри этого ScrollView, - это ваш настоящий дизайн, ScrollView обеспечивает только прокрутку макетов и представлений.Для получения дополнительной информации о поддержке различных размеров экрана, вы можете обратиться к https://developer.android.com/training/multiscreen/screensizes

0 голосов
/ 23 сентября 2018

Сначала попробуйте получить ориентацию экрана, а затем, основываясь на текущей ориентации, показать или скрыть полосу прокрутки textview

int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
    // code for portrait mode
    textview.setVerticalScrollBarEnabled(false); 
} else {
    // code for landscape mode
    textview.setVerticalScrollBarEnabled(true); 
}

Также добавьте это в свою деятельность, если вы используете только один макет для своей деятельности

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}
...