【问题标题】:Android.. 2 overlapping views of different height inside frame layout, make them same heightAndroid ..框架布局内不同高度的2个重叠视图,使它们高度相同
【发布时间】:2011-10-16 15:14:57
【问题描述】:

我在框架布局中有一个进度条和一个文本视图。文字与进度条重叠。

文本视图是进度条高度的两倍(由于文本的长度),我希望进度条的高度能够自动适应。

我尝试通过将进度条设置为 match_parent 并将父级设置为 wrap_content 来做到这一点,但进度条的高度没有增加。

XML 是这样的:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
> 

<ProgressBar  
    android:layout_width="match_parent"  
    style="?android:attr/progressBarStyleHorizontal"  
    android:layout_height="fill_parent"
    android:layout_gravity="center_horizontal|center_vertical"
/> 

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Big long text here................................"    
    android:layout_gravity="center_horizontal|center_vertical"
/>

</FrameLayout>

【问题讨论】:

  • match_parent 和 fill_parent?

标签: android layout view height


【解决方案1】:

对 ProgressBar 和 TextView 使用带有 android:layout_weight="1" 的 LinearLayout。像这样的

<LinearLayout android:layout_height="match_parent"
 android:layout_width="match_parent"
 android:orientation="vertical> 
 <ProgressBar  
android:layout_width="match_parent"  
style="?android:attr/progressBarStyleHorizontal"  
android:layout_height="0dp"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_weight="1"
/> 

<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:textSize="30sp"
android:text="Big long text here................................"    
android:layout_gravity="center_horizontal|center_vertical"
android:layout_weight="1"
/>
</LinearLayout>

您为什么选择 FrameLayout?

【讨论】:

    【解决方案2】:

    使用 RelativeLayout 并使用 layout_align 对齐边界。

     <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:focusable="false">
            <TextView
                android:id="@+id/textview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="30sp"
                android:text="Big long text here................................"
                android:layout_gravity="center_horizontal|center_vertical" />
            <ProgressBar
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_height="fill_parent"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_alignTop="@id/textview"
                android:layout_alignLeft="@id/textview"
                android:layout_alignBottom="@id/textview" />
        </RelativeLayout>
    

    【讨论】:

    • 我爱你。谢谢。 textview 必须在 xml 中的进度条之后(显示在其上方)。这需要用 android:layout_alignTop="@+id/textview" 替换进度条标签中的 android:layout_alignTop="@id/textview" 等(因为 id 尚未定义)。效果很好!
    猜你喜欢
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2015-01-03
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多