Как скрыть кнопку в ландшафтном режиме при использовании привязки данных

Предполагая, что ваш файл находится в формате одного псевдонима для каждой строки, используйте это.

Сначала откройте файл:

f = open("yourfile.txt","r")

Далее, получите все свои строки из file:

lines = f.readlines()

Теперь вы можете закрыть файл:

f.close()

И снова открыть его в режиме записи:

f = open("yourfile.txt","w")

Затем напишите назад, за исключением строки, которую вы хотите удалить. Возможно, вы захотите изменить "\n" на любую строку, заканчивающую ваш файл.

for line in lines:
  if line!="nickname_to_delete"+"\n":
    f.write(line)

В конце закройте файл еще раз.

f.close()
0
задан Bohsen 21 January 2019 в 11:32
поделиться

2 ответа

Вы должны проверить свой адаптер привязки, какая ориентация телефона в настоящее время включена. Вот еще один пост, где вы можете найти ответ на свой вопрос , как определить ориентацию устройства Android?

РЕДАКТИРОВАТЬ:

Вам необходимо определить ориентацию и сохранить его как логическое значение. Позже вы должны передать эту переменную вашему адаптеру, который в этом случае будет логическим.

<data>

<import type="android.view.View"/>

<variable
    name="isLandscapeMode"
    type="boolean"/>

</data>
0
ответ дан Bohsen 21 January 2019 в 11:32
поделиться

Для других, если им нужно такое же поведение. Есть два решения.

Первое решение (создайте BindingAdapter и используйте его для элемента пользовательского интерфейса по вашему выбору):

@BindingAdapter("bind:visibleInLandscapeMode")
fun View.setVisibleInLandscapeMode(visible: Boolean) {
    Timber.d("setVisibleInLandscapeMode() returns ${resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE}")
    visibility = if (visible && (resources.configuration.orientation != Configuration.ORIENTATION_LANDSCAPE)) VISIBLE else INVISIBLE
}

В макете XML:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:bind="http://schemas.android.com/apk/lib/com.example">

    ...

    <ImageButton
        ...
        bind:visibleInLandscapeMode="false"
        ...
        />
[ 1111] Второе решение (создайте обязательное выражение, которое изменяет видимость элемента пользовательского интерфейса):

<ImageButton
    ...
    android:visibility="@{context.getResources.getConfiguration.orientation == Configuration.ORIENTATION_LANDSCAPE ? View.INVISIBLE : View.VISIBLE}"
    ...
    />

Запомните правильный импорт:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <import type="android.view.View"/>
        <import type="android.content.res.Resources" />
        <import type="android.content.res.Configuration" />
        ...
    </data>
    ...

Кстати Будьте осторожны при использовании привязки данных с AndroidAnnotation . Смотрите выпуск здесь и здесь .

0
ответ дан Bohsen 21 January 2019 в 11:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: