Android工具栏布局问题

时间:2015-07-20 11:54:46

标签: android android-layout

我正在尝试使用工具栏创建一个底栏并将其与父底部对齐。这是它的外观:

Bottom Toolbar

但是如图所示,它们是很多空的空间,因为布局没有完全居中。为什么会这样?

bottom_tool_bar.xml     

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimaryLight"
android:elevation="4dp"
android:layout_alignParentBottom="true"
>

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

    <ImageView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:id="@+id/origin_select"
        android:src="@mipmap/ic_action_play"
        android:background="@drawable/feedback_background"
        android:onClick="choose_origin_button"
        />


    <ImageView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:id="@+id/destination_select_select"
        android:src="@mipmap/ic_action_stop"
        android:background="@drawable/feedback_background"
        android:onClick="choose_destination_button"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:id="@+id/poi_select"
        android:src="@mipmap/ic_action_pause"
        android:background="@drawable/feedback_background"
        android:onClick="choose_interest_button"/>


</LinearLayout>
</android.support.v7.widget.Toolbar>

相关活动的布局文件:     

<include
    android:id="@+id/tool_bar"
    layout="@layout/tool_bar"
    >
</include>

<include
    android:id="@+id/bottom_tool_bar"
    layout="@layout/bottom_tool_bar">
</include>

<fragment
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/plot_path_map"
    android:layout_below="@+id/tool_bar"
    android:layout_above="@+id/bottom_tool_bar"
    android:name="com.google.android.gms.maps.MapFragment"
    />
<Button
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:id="@+id/submit_button"
    android:text="Submit"
    android:textColor="#FFFFFF"
    android:layout_centerHorizontal="true"
    android:background="@drawable/feedback_background"
    android:layout_centerVertical="true"
    android:textSize="20sp"
    android:layout_alignParentBottom="true"
    android:visibility="invisible"
    android:onClick="submit_button_click"
    />
</RelativeLayout>

5 个答案:

答案 0 :(得分:1)

如果您想将工具栏放在底部,这就是您应该做的事情。

使用LinearLayout和alignParentBottom =“true”

<RelativeLayout
android:id="@+id/mainLyt"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Some layout things -->

<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/bottomBar">

<!-- some scrolling content -->
</ScrollView>

<LinearLayout
android:id="@+id/bottomBar"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="horizontal"
android:layout_alignParentBottom="true">

<!-- Some Buttons -->
</LinearLayout>

</RelativeLayout>

正如您提到的间距,我认为是另一个问题,您可以使用ToolBar中的以下属性对其进行修改。

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

答案 1 :(得分:0)

创建一个单独的布局文件并将其命名为 tool_bar.xml ,并确保LinearLayout是您的根布局。

然后在你的活动中输入:

weight

然后将 0.3 layout:width提供给所有 ImageViews ,将layout:heightwrap_content提供为p point myvector[0] ++p p point myvecotr[1] p[2] point myvector[2 + 1] so myvector[3] === p[2] === 100

答案 2 :(得分:0)

为了使视图居中,您有很多选项,其中两个是以下(我相信第二个是最好的):

首先在你的linearlayout中包含weigthsum,我喜欢使用100,因为这有助于我思考百分比,然后包括2个stump framelayout以便将你的imageviews推到水平中心并让他们通过使用这样的重量保持响应属性:

  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="100"
        android:orientation="horizontal"
        >
        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="30"/>
        <ImageView
            android:id="@+id/origin_select"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="13"
            android:background="@drawable/feedback_background"
            android:onClick="choose_origin_button"
            android:src="@mipmap/ic_action_play"
            />


        <ImageView
            android:id="@+id/destination_select_select"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="13"
            android:background="@drawable/feedback_background"
            android:onClick="choose_destination_button"
            android:src="@mipmap/ic_action_stop"/>

        <ImageView
            android:id="@+id/poi_select"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="13"
            android:background="@drawable/feedback_background"
            android:onClick="choose_interest_button"
            android:src="@mipmap/ic_action_pause"/>
        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="30"/>

    </LinearLayout>

正如你所看到的,framelayout内部没有任何内容,但是它们可以帮助你将其他ImageView推向中心,它们都可以为你提供60%的空间,而你的ImageView则只剩下40%,因此它们各占13%。 / p>

另一方面,您可以使用RelativeLayout作为父元素而不是LinearLayout,并将Imageview与id:destination_select_select对齐,将父级水平和垂直对齐,然后将其他两个图像视图放在一个居中于中间。 此选项可能是最好的

像这样:

  <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <ImageView
            android:id="@+id/origin_select"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@drawable/feedback_background"
            android:onClick="choose_origin_button"
            android:src="@mipmap/ic_action_play"
            android:layout_alignLeft="@+id/destination_select_select"
            />


        <ImageView
            android:id="@+id/destination_select_select"
            android:layout_width="wrap_content"
            android:layout_centerInParent="true"
            android:layout_height="match_parent"
            android:background="@drawable/feedback_background"
            android:onClick="choose_destination_button"
            android:src="@mipmap/ic_action_stop"/>

        <ImageView
            android:id="@+id/poi_select"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignRight="@+id/destination_select_select"
            android:background="@drawable/feedback_background"
            android:onClick="choose_interest_button"
            android:src="@mipmap/ic_action_pause"/>

    </RelativeLayout>

答案 3 :(得分:0)

使用下面的行来避免活动类中的左侧间隙。

mToolbar.setContentInsetsAbsolute(0, 0);

请查看下面的代码,以避免顶部和底部空间。

 <ImageView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:id="@+id/origin_select"
            android:src="@mipmap/ic_action_play"
            android:background="@drawable/feedback_background"
            android:onClick="choose_origin_button"
            />

在您的图片视图中,width应为wrap_contentheight应为0dp

答案 4 :(得分:0)

要避免上下空格,

添加此行

android:minHeight="0dp"

<android.support.v7.widget.Toolbar>属性。