修复Android布局(dp,margin等)

时间:2015-03-15 20:44:49

标签: android xml android-layout

虽然我通过几个线程解读了自己,解释了dp,sp,px等之间的差异,并试图获得良好的布局, 我还在努力为不同的手机做好准备。

我正在使用不同的片段,但是如果我在一个片段中得到帮助,那么我确信我能够自己修复其他片段。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    <!--all paddings=0-->
    android:keepScreenOn="true"
    tools:context=".MainActivity">

    ...

    <fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/fragmentBase"
        class="...FragmentBase" />

    <!--other fragments-->

</RelativeLayout>

因此,我试图在该fragmentBase中获得适当的布局,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    <!--all paddings=0-->>
    <fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/fragmentBase"
        class="...FragmentBase" />
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_marginTop="40dp"
        android:requiresFadingEdge="vertical">

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

            <!--elements-->

        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="bottom">
        <Button
            android:layout_width="0dp"
            android:layout_weight="0.8"
            android:layout_height="40dp"
            <!--other stuff-->/>

        <Button
            android:layout_width="0dp"
            android:layout_weight="0.5"
            android:layout_height="40dp"
            <!--other stuff--> />

        <Button
            android:layout_width="0dp"
            android:layout_weight="0.7"
            android:layout_height="40dp"
            <!--other stuff-->/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="bottom"
        android:layout_marginBottom="40dp">

        <Button
            android:layout_width="0dp"
            android:layout_weight="0.6"
            android:layout_height="40dp"
            <!--other stuff--> />

        <Button
            android:layout_width="0dp"
            android:layout_weight="0.5"
            android:layout_height="40dp"
            <!--other stuff--> />

        <Button
            android:layout_width="0dp"
            android:layout_weight="0.6"
            android:layout_height="40dp"
            <!--other stuff--> />
    </LinearLayout>

</RelativeLayout>

SOOOOO。问题基本上是,滚动视图在某些情况下太长,在其他情况下太短。有一个固定的layout_height =&#34; 400dp&#34;似乎是个错误。 同时将两个按钮行的高度设置为40dp并且一个40dp高于另一个,从底部开始似乎都不是一个好的决定,但这些按钮得到了背景图像,所以我可以&# 39;使用wrap_content。

布局如何正确?我希望scrollView在我的&#34;标题&#34;下面开始,所以android:layout_marginTop =&#34; 40dp&#34;或多或少固定,而两个按钮应位于屏幕的最底部。 我想我希望scrollview是动态长度。

Plz帮助:S

2 个答案:

答案 0 :(得分:0)

尝试将此代码添加到您的滚动视图

android:layout_toStartOf="@+id/linearlayout1"

和这个

android:id="@+id/linearlayout1"

到您的40边距布局

这可能会有所帮助

答案 1 :(得分:0)

我会尝试帮助你而不重写上面的所有代码。
首先,我将首先提出一些改变:

  1. 您可以将包含按钮的两个LinearLayouts的高度设置为40dp,并将按钮的高度设置为“match_parent”

  2. 您可以为包含按钮的两个LinearLayouts提供一个id,比如说

    android:id="@+id/row1" 
    

    android:id="@+id/row2"  
    

    然后将底部(id = row2)设置为

    android:layout_alignParentBottom="true"
    

    最上面的一个(id = row1)

    android:layout_above="@id/row2"  
    
  3. 完成后,您可以在ScrollView中设置以下参数

    android:layout_alignParentTop="true"
    android:layout_above="@id/row1"
    
  4. 如果我理解了这个问题,这应该会有所帮助。希望我写的内容很有用