5

我的 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>

我的输出如下,

在此处输入图像描述

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

有人可以帮忙吗?

4

5 回答 5

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根据您的需要

于 2013-04-19T04:37:53.787 回答
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);
                }
            }
        });

    }
于 2013-04-19T06:47:46.713 回答
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>
于 2013-04-19T05:09:17.083 回答
0

为什么不能尝试合并?

看看这个。

http://android-developers.blogspot.in/2009/03/android-layout-tricks-3-optimize-by.html

于 2013-04-19T04:59:41.177 回答
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);

            }
        });
    }

}
于 2013-04-19T06:04:55.690 回答