我会从我的目标开始。我想要实现的是布局比真正的手机屏幕大3倍。
现在我尝试测试我的解决方案,但是我有滚动问题。 这就是看我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="400dp"
tools:context=".Zo"
android:id="@+id/zo_root"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="9">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:background="@color/Red"
></FrameLayout >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:background="@color/Yellow"
></FrameLayout >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:background="@color/Blue"
></FrameLayout >
</LinearLayout>
</ScrollView>
我的代码背后:
@Override
protected void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zo);
setParameterForScroolView();
}
private void setParameterForScroolView()
{
ParameterKeeper parameterKeeper = new ParameterKeeper(this);
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.zo_root);
linearLayout.getLayoutParams().height = parameterKeeper.getHeightOfScreen() *3;
}
背后的代码效果很好,因为我的整个屏幕都是红色的,但我根本无法滚动它。
有answer表示我需要从scrollView
android:fillViewport="true"
中删除。之后,我的LinearLayout就像this问题一样消失了。
我将LinearLayout添加为root(source),但它根本没有帮助我。
你有什么想法解决它吗?
我还尝试在height
中为1600dp
设置400dp
LinearLayout
而不是xml
,以确保重新计算不会出现问题view
。它也不起作用。
答案 0 :(得分:0)
您正在更改错误布局的大小。你想修改滚动视图中第一个布局的高度。
答案 1 :(得分:0)
如果子元素具有layout_weight并且我在父视图中以编程方式更改高度值,则某种方式滚动不起作用。
在我的情况下,使其工作的唯一方法是在活动代码中的每个frame layout
中设置高度等于屏幕大小。通过这种方式,我可以达到layout height == 3 x real screen size