LinearLayout高度未以编程方式设置

时间:2014-03-17 16:33:23

标签: android android-layout

在我的应用中,我的布局如下:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/belowAcionBar"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal">
    </LinearLayout>

</FrameLayout>

我需要动态设置LinearLayout belowAcionBar的高度。此视图需要显示在ActionBar下方。

使用以下代码设置高度:

View panelView = findViewById(R.id.belowAcionBar); // This gives object of LinearLayout
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) panelView.getLayoutParams();
params.height = 48; // In dp
panelView.setLayoutParams(params);

问题1:

由于belowAcionBarLinearLayout,我首先尝试将LayoutParams用作LinearLayout.LayoutParams,而不是FrameLayout.LayoutParams。 但它会导致运行时错误Can't cast FrameLayout.LayoutParams to LinearLayout.LayoutParams

为什么panelView.getLayoutParams()FrameLayout

问题2:

即使在使用上述代码后,我的观看次数belowAcionBar似乎远远低于48dp。似乎它被隐藏在ActionBar后面。

问题3:

如果我将布局更改为:

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <LinearLayout android:orientation="vertical"
            android:id="@+id/belowAcionBar"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="@color/purple_dark" >
        </LinearLayout>
    </LinearLayout>
</FrameLayout>

并将java代码更改为:

View panelView = findViewById(R.id.belowAcionBar); 
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) panelView.getLayoutParams();
params.height = 48; // In dp
panelView.setLayoutParams(params);

然后我的代码完美运行,但增加了额外的布局。它为什么现在正在运作?

提前致谢。

0 个答案:

没有答案
相关问题