Обертывание тегов span внутри div

После долгих часов исследований я наконец нашел решение, которое работает для всех версий API. Надеюсь, это сэкономит кому-то время.

Если вы разрабатываете для API> = 11, решение простое: либо

1) Добавьте два нижеприведенных свойства в XML-файл EditText

android:inputType="none"
android:textIsSelectable="true"

или

2) Программно сделайте следующее

myEditText.setInputType(InputType.TYPE_NULL);
myEditText.setTextIsSelectable(true);

И все готово.

Если вы хотите обслуживать API < Кроме того, я обнаружил, что невозможно отключить вывод на клавиатуру, если вы хотите выбрать текст для копирования и вставки. Если для параметра focusable задано значение false, клавиатура будет отключена, но это не поможет, поскольку она также отключает возможность выделения текста. Любые другие решения, которые я нашел в stackoverflow, все либо не работают, либо отключают выбор текста одновременно.

Один уродливый способ решить это как таковой.

Сначала добавьте это свойство в XML-файл EditText

android:editable="false"

Да, это устарело, но необходимо, чтобы EditText не редактировался в версии API < 11.

Далее нам нужно будет скрыть клавиатуру, как только она появится, чтобы мы могли продолжить выделение текста без блокировки клавиатуры.

Используйте этот код ниже, чтобы обнаружить появление клавиатуры (решение получено из https://stackoverflow.com/a/9108219/1241783 ) и немедленно скрыть ее.

if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
{
    final View activityRootView = findViewById(R.id.activityRoot);
    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
        public void onGlobalLayout() {
            Rect r = new Rect();
            //r will be populated with the coordinates of your view that area still visible.
            activityRootView.getWindowVisibleDisplayFrame(r);

            int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
            if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...

            //Hide the keyboard instantly!
            if (getCurrentFocus() != null) 
            {
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
            }
            }
         }
        });
}

Это работает для моего случая. Хотя вы можете видеть, как клавиатура появляется в доли секунды (что является уродливой частью), но я не могу придумать какой-либо другой способ заставить это работать во время написания. Если у вас есть лучшее решение, пожалуйста, оставьте комментарий!

Дайте мне знать, если это сэкономит кому-то время:)

25
задан Shree 18 April 2019 в 04:25
поделиться

2 ответа

Другой вариант - просто установить теги для отображения в виде встроенного блока:

.mytags {
   display:inline-block;
}
32
ответ дан 28 November 2019 в 18:25
поделиться

Звучит так, будто вы перемещаете пролеты внутри контейнера div. Если это так, и вы хотите, чтобы 'tagcloud' содержала (обертывала) всплывающие промежутки, тогда вам нужно очистить поплавки, добавив следующее в CSS-тег tagcloud: Технику можно найти здесь: http://www.quirksmode.org/css/clearing.html

2
ответ дан 28 November 2019 в 18:25
поделиться