#android #layout #android-linearlayout #android-windowmanager
#Android #макет #android-linearlayout #android-windowmanager
Вопрос:
У меня следующий макет:
<!-- TODO: MAKE EVERYTHING BELOW THIS LAYOUT FOCUSABLE-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="match_parent"
android:background="@color/colorPrimary"
android:layout_height="wrap_content">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/original"
android:layout_weight=".1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:layout_weight=".6"
android:id="@ id/textViewSourceText"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".2"
android:text="X"
android:id="@ id/closeButton"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/translation"
android:layout_weight=".1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".9"
android:text="New Text"
android:id="@ id/textViewTranslatedText"/>
</TableRow>
</TableLayout>
</LinearLayout>
Который выдает:
Указанный макет отображается в верхней части всех представлений с помощью:
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mParentLayout = (LinearLayout) mInflater.inflate(R.layout.result_layout,
null);
textViewSourceText = (TextView) mParentLayout.findViewById(R.id.textViewSourceText);
textViewTranslatedText = (TextView) mParentLayout.findViewById(R.id.textViewTranslatedText);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.CENTER;
//params.x = 0;
//params.y = 100;
windowManager.addView(mParentLayout, params);
Проблема в том, что я не могу сосредоточиться на любом другом контенте, если отображается макет.
Я хотел бы спросить:
Как я могу сделать содержимое ниже сфокусированным, пожалуйста?
Большое спасибо за любые советы.
Ответ №1:
Есть два варианта, которые вы можете попробовать :
1- используйте WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
при определении params
.
2- сделайте текстовые представления фокусируемыми :
textViewSourceText.setFocusable(false) ;
textViewSourceText.setFocusableInTouchMode(false) ;
textViewTranslatedText.setFocusable(false) ;
textViewTranslatedText.setFocusableInTouchMode(false) ;
Комментарии:
1. Спасибо, но я думал, что содержимое под макетом можно фокусировать, это означает, что, например, страница в браузере, которая находится под отображаемым пользовательским макетом, должна быть прокручиваемой.