Android:如何使自定义布局下面的内容可以集中?

时间:2016-10-06 22:18:20

标签: android layout 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>

产生:

enter image description here

提及的布局使用以下方式显示在所有视图的顶部:

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);

问题是如果显示布局,我无法专注于任何其他内容。

我想问一下:

我怎样才能将这些内容放在下面呢?

非常感谢您的任何建议。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以尝试两种选择:

1-在定义WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE时使用params

2-使文本视图可以聚焦:

textViewSourceText.setFocusable(false) ;
textViewSourceText.setFocusableInTouchMode(false) ;

textViewTranslatedText.setFocusable(false) ;
textViewTranslatedText.setFocusableInTouchMode(false) ;