水平地居中一组视图

时间:2014-05-22 16:00:10

标签: android android-layout relativelayout

我希望有一些视图,如下图所示:

Disposition of elements

天知道我已经尝试了几种方法来实现它,但它们都没有真正起作用。

在最后一次尝试中,布局看起来应该是这样,但我发现填充成为视图的可点击部分的一部分,因此,“停止”按钮可以显示“开始”按钮,而这个按钮不会工作

此尝试的xml如下。

audio_player.xml:

<?xml version="1.0" encoding="utf-8"?>
<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"
android:padding="@dimen/activity_horizontal_margin" >

<ImageView
    android:id="@+id/pauseButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:onClick="pauseAudio"
    android:paddingRight="70dp"
    android:src="@drawable/pause_selector"
    android:text="PAUSE"
    android:visibility="invisible" />

<ImageView
    android:id="@+id/playButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:onClick="playSelection"
    android:paddingRight="70dp"
    android:src="@drawable/play_selector"
    android:text="PLAY" />

<ImageView
    android:id="@+id/moreVolumeButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/stopButton"
    android:layout_toRightOf="@+id/stopButton"
    android:onClick="adjustVolume"
    android:paddingLeft="15dp"
    android:src="@drawable/volume_plus_selector"
    android:text="+" />

<ImageView
    android:id="@+id/lessVolumeButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/playButton"
    android:layout_toLeftOf="@+id/playButton"
    android:onClick="adjustVolume"
    android:paddingRight="15dp"
    android:src="@drawable/volume_minus_selector"
    android:text="-" />

<ImageView
    android:id="@+id/stopButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:onClick="stopAudio"
    android:paddingLeft="70dp"
    android:src="@drawable/stop_selector"
    android:text="STOP" />

<SeekBar
    android:id="@+id/seekBarPlayer"
    android:layout_width="180dp"
    android:layout_height="wrap_content"
    android:layout_below="@id/stopButton"
    android:layout_centerHorizontal="true"
    android:paddingTop="5dp"
    android:src="@drawable/process_bar" />

<TextView
    android:id="@+id/audioTotalTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/seekBarPlayer"
    android:layout_toRightOf="@+id/seekBarPlayer"
    android:paddingBottom="6dp"
    android:paddingLeft="7dp"
    android:text="@string/initial_time"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/audioRunningTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/seekBarPlayer"
    android:layout_toLeftOf="@+id/seekBarPlayer"
    android:paddingBottom="6dp"
    android:paddingRight="7dp"
    android:text="@string/initial_time"
    android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>

我确信需要有一个更好的方法,我想把上层元素分组成一个RelativeLayout并应用它:android:layout_centerHorizo​​ntal =&#34; true&#34;但它不起作用。 :(

Heeeelp!

编辑:

那个布局在另一个布局中。我发布了它最有趣的部分:

<com.slidinglayer.SlidingLayer
    xmlns:slidingLayer="http://schemas.android.com/apk/res/------------"
    android:id="@+id/slidingLayer2"
    android:layout_width="@dimen/layer_width"
    android:layout_height="match_parent"
    slidingLayer:closeOnTapEnabled="false"
    slidingLayer:offsetWidth="@dimen/offset_width" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/backround" >

        <android.inputmethodservice.KeyboardView
            android:id="@+id/keyboardview2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="#00000000"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:keyBackground="@drawable/keyboard_button_selector"
            android:paddingBottom="@dimen/activity_horizontal_margin"
            android:visibility="gone" />

        <include
            android:id="@+id/audio_player"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            layout="@layout/audio_player" />
    </RelativeLayout>
</com.slidinglayer.SlidingLayer>

2 个答案:

答案 0 :(得分:1)

这就是我最终的目标:

<?xml version="1.0" encoding="utf-8"?>
<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"
    android:padding="@dimen/activity_horizontal_margin"
    >
    <LinearLayout
        android:id="@+id/llUpperHalf"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        >
        <ImageView
            android:id="@+id/lessVolumeButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="adjustVolume"
            android:paddingRight="15dp"
            android:src="@drawable/ic_launcher"
        />
        <ImageView
            android:id="@+id/playButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="playSelection"
            android:src="@drawable/ic_launcher"
        />
        <ImageView
            android:id="@+id/pauseButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="pauseAudio"
            android:src="@drawable/ic_launcher"
            android:visibility="gone"
        />
        <ImageView
            android:id="@+id/moreVolumeButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="adjustVolume"
            android:paddingLeft="15dp"
            android:src="@drawable/ic_launcher"
        />
        <ImageView
            android:id="@+id/stopButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="stopAudio"
            android:src="@drawable/ic_launcher"
        />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/llUpperHalf"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        >
        <TextView
            android:id="@+id/audioRunningTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/seekBarPlayer"
            android:layout_toLeftOf="@+id/seekBarPlayer"
            android:gravity="center_vertical"
            android:paddingRight="8dp"
            android:paddingTop="8dp"
            android:text="00:00"
            android:textAppearance="?android:attr/textAppearanceSmall"
        />
        <SeekBar
            android:id="@+id/seekBarPlayer"
            android:layout_width="180dp"
            android:layout_height="wrap_content"
            android:layout_below="@id/stopButton"
            android:paddingTop="5dp"
        />
        <TextView
            android:id="@+id/audioTotalTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:paddingLeft="8dp"
            android:paddingTop="8dp"
            android:text="00:00"
            android:textAppearance="?android:attr/textAppearanceSmall"
        />
    </LinearLayout>
</RelativeLayout>

哪会产生以下结果(我没有你的资源。所以我用了我的东西):

enter image description here

请注意:

    自API级别8以来
  • fill_parent 已弃用。请改用match_parent
  • ImageViews 忽略 android:text属性

答案 1 :(得分:0)

试试这个会起作用:

<?xml version="1.0" encoding="utf-8"?>
<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"
android:padding="@dimen/activity_horizontal_margin" >

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" 
        android:gravity="right">

        <ImageView
            android:id="@+id/lessVolumeButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="adjustVolume"
            android:text="-" />
    </LinearLayout>

    <ImageView
        android:id="@+id/pauseButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="pauseAudio"
        android:text="PAUSE"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/playButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="playSelection"
        android:text="PLAY" />

    <ImageView
        android:id="@+id/stopButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="stopAudio"
        android:text="STOP" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" 
        android:gravity="left">

        <ImageView
            android:id="@+id/moreVolumeButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="adjustVolume"
            android:paddingLeft="15dp"
            android:text="+" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/main_ll"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/audioTotalTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingBottom="6dp"
        android:paddingLeft="7dp"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <SeekBar
        android:id="@+id/seekBarPlayer"
        android:layout_width="180dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:paddingTop="5dp" />

    <TextView
        android:id="@+id/audioRunningTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingBottom="6dp"
        android:paddingRight="7dp"
        android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>

</RelativeLayout>