在弹出窗口中定位滚动视图 window
Positioning a scrollview within a popup window
我正在处理我的第一个大型 android 项目,但我遇到了一个问题。
我必须显示一个带有条款和条件文本的弹出窗口window。由于其大小,文本必须滚动。我的具体问题是,出于视觉原因,我希望顶部位于屏幕下方,但我做任何事情都不会使其从顶部移动。
xml是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/tc_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_long"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A very long string of text"></TextView>
</LinearLayout>
</ScrollView>
</LinearLayout>
我试过添加:
tools:layout_editor_absoluteY="100dp" />
和
android:layout_marginTop="100dip"
在不同的地方——scrollview 本身、父 LinearLayout 等但没有任何效果。
我已经转到放置 window 的代码并尝试在 ScrollView class 中使用 scrollTo 方法,如下所示:
View tcView = inflater.inflate(R.layout.t_and_c_dialog, null);
ScrollView tcScroll = (ScrollView) tcView.findViewById(R.id.tc_scroll);
tcScroll.scrollTo(0, 200);
PopupWindow pwTC = new PopupWindow(tcView, width, width, true);
pwTC.showAtLocation(new LinearLayout(this), Gravity.CENTER, 0, 0);
还是不开心。有人有什么想法吗?
非常感谢
托尼·雷诺兹
我继续尝试各种事情并提出了以下建议,我并不完全理解,但可以务实地工作。
首先,使用以下代码弹出弹出窗口:
View tcView = inflater.inflate(R.layout.t_and_c_dialog, null);
PopupWindow pwTC = new PopupWindow(tcView, width, width, true);
pwTC.showAtLocation(new LinearLayout(this), Gravity.NO_GRAVITY, 0, 800);
这会将 window 放置在固定的 y 坐标上。
xml现在是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/tc_scroll"
android:layout_width="match_parent"
android:layout_height="400dp"
android:scrollbars="none" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_long"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A very long string of text"></TextView>
</LinearLayout>
</ScrollView>
</LinearLayout>
因此设置硬连线 window 深度。这工作正常,如下所示。
它只能为给定的模拟器提供正确的外观,所以我必须找出如何以编程方式设置大小。
我有义务对这里到底发生了什么发表任何评论,and/or 改进提示
我正在处理我的第一个大型 android 项目,但我遇到了一个问题。 我必须显示一个带有条款和条件文本的弹出窗口window。由于其大小,文本必须滚动。我的具体问题是,出于视觉原因,我希望顶部位于屏幕下方,但我做任何事情都不会使其从顶部移动。
xml是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/tc_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_long"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A very long string of text"></TextView>
</LinearLayout>
</ScrollView>
</LinearLayout>
我试过添加:
tools:layout_editor_absoluteY="100dp" />
和
android:layout_marginTop="100dip"
在不同的地方——scrollview 本身、父 LinearLayout 等但没有任何效果。
我已经转到放置 window 的代码并尝试在 ScrollView class 中使用 scrollTo 方法,如下所示:
View tcView = inflater.inflate(R.layout.t_and_c_dialog, null);
ScrollView tcScroll = (ScrollView) tcView.findViewById(R.id.tc_scroll);
tcScroll.scrollTo(0, 200);
PopupWindow pwTC = new PopupWindow(tcView, width, width, true);
pwTC.showAtLocation(new LinearLayout(this), Gravity.CENTER, 0, 0);
还是不开心。有人有什么想法吗? 非常感谢 托尼·雷诺兹
我继续尝试各种事情并提出了以下建议,我并不完全理解,但可以务实地工作。 首先,使用以下代码弹出弹出窗口:
View tcView = inflater.inflate(R.layout.t_and_c_dialog, null);
PopupWindow pwTC = new PopupWindow(tcView, width, width, true);
pwTC.showAtLocation(new LinearLayout(this), Gravity.NO_GRAVITY, 0, 800);
这会将 window 放置在固定的 y 坐标上。
xml现在是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/tc_scroll"
android:layout_width="match_parent"
android:layout_height="400dp"
android:scrollbars="none" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_long"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A very long string of text"></TextView>
</LinearLayout>
</ScrollView>
</LinearLayout>
因此设置硬连线 window 深度。这工作正常,如下所示。
它只能为给定的模拟器提供正确的外观,所以我必须找出如何以编程方式设置大小。
我有义务对这里到底发生了什么发表任何评论,and/or 改进提示