如何在布局中的同一位置放置2个按钮

时间:2013-04-19 04:35:04

标签: android android-layout android-intent android-widget

我的xml布局中的My Table行如下所示:

<TableRow 
          android:layout_marginTop="10dp"
            >

            <SeekBar
                android:id="@+id/seekBar1"
                android:layout_width="256dp"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/titlename"
                android:layout_="@+id/playbtn"
                android:layout_marginTop="4dp"
               />
             <Button
            android:id="@+id/playbtn"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:background="@drawable/play"
            android:layout_marginBottom="3dp"/>

        <Button
            android:id="@+id/pausebtn"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_toTopOf="@+id/playbtn"
            android:layout_alignParentBottom="true"
            android:background="@drawable/pause"
            android:layout_marginBottom="3dp"/>
        </TableRow>

我的输出如下,

  

enter image description here

我的要求是在布局中的同一位置显示播放暂停按钮?

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:8)

使用FrameLayout并将一个按钮放在另一个

喜欢这个

<FrameLayout ... >
      <Button
            android:id="@+id/playbtn"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/play"/>

        <Button
            android:id="@+id/pausebtn"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/pause"/>

</FrameLayout>

这会将暂停按钮置于播放按钮上。根据需要制作必要的按钮visibleinvisible

答案 1 :(得分:1)

尝试使用此布局。使用LinearLayout和FrameLayout的组合来获得所需的结果。

<TableRow 
      android:layout_marginTop="10dp">
<LinearLayout 
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
        <SeekBar
            android:id="@+id/seekBar1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weight="1"
            android:layout_alignLeft="@+id/titlename"
            android:layout_="@+id/playbtn"
            android:layout_marginTop="4dp"
           />

 <FrameLayout 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" >
    <Button
        android:id="@+id/playbtn"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/play"/>
    <Button
        android:id="@+id/pausebtn"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/pause"/>

  </FrameLayout>
</LinearLayout>
</TableRow>

答案 2 :(得分:1)

一旦试试这个:

<TableRow
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <SeekBar
            android:id="@+id/seekBar1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".8" />

        <Button
            android:id="@+id/play"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".2"
           />
    </TableRow>

主要活动

private boolean playing = false;
    Button play;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        play=(Button) findViewById(R.id.play);
        play.setBackgroundResource(R.drawable.pause);

        play.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(playing){
                    playing = false;
                    play.setBackgroundResource(R.drawable.pause);
                }
                else {
                    playing = true;
                    play.setBackgroundResource(R.drawable.play);
                }
            }
        });

    }

答案 3 :(得分:0)

答案 4 :(得分:0)

您无需为其创建两个按钮。你可以单身做。我创建了一个示例程序。我发现这是一种更清洁的方法。

MainActivity的布局

<LinearLayout 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:orientation="vertical"
    android:gravity="center">

    <Button
        android:id="@+id/buttonPlayPause"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

这是MainActivity

package in.live.homam.imagebuttonexample;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    private Button buttonPlayPause;

    private static final int resourceIdPlay = R.drawable.play;
    private static final int resourceIdPause = R.drawable.pause;
    private int resourceIdButton = resourceIdPlay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        buttonPlayPause = (Button) findViewById(R.id.buttonPlayPause);
        buttonPlayPause.setBackgroundResource(resourceIdButton);
        buttonPlayPause.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if(resourceIdButton == resourceIdPlay) {
                    resourceIdButton = resourceIdPause;
                    Log.d("Tag", "Playing");
                }
                else {
                    resourceIdButton = resourceIdPlay;
                    Log.d("Tag", "Paused");
                }
                buttonPlayPause.setBackgroundResource(resourceIdButton);

            }
        });
    }

}