标签: android-button

如何在应用程序关闭/最小化时停止 MediaPlayer 声音?

在我的秒表应用程序中,开始按钮应该启动声音,暂停按钮应该停止声音。到目前为止,我的程序运行良好。

但是在播放声音的过程中,如果我返回或最小化应用程序,声音不会停止。它会继续播放(一直播放,即使设备处于空闲状态)。奇怪的是,当我重新打开应用程序以停止声音时,它永远不会停止。怎么解决这个问题呢?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    timerValue = (TextView) findViewById(R.id.timerValue);

    startButton = (Button) findViewById(R.id.startButton);
    mp = MediaPlayer.create(getApplicationContext(), R.raw.sound);
    startButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            startTime = SystemClock.uptimeMillis();
            customHandler.postDelayed(updateTimerThread, 0);

               mp.start();
                mp.setLooping(true);


        }
    });

    pauseButton = (Button) findViewById(R.id.pauseButton);

    pauseButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

            timeSwapBuff += timeInMilliseconds;
            customHandler.removeCallbacks(updateTimerThread);
            if(mp.isPlaying())
            {
                mp.pause();

            }
       }
    });
    resetButton = (Button) findViewById(R.id.reset);


    resetButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

            timerValue.setText("" + 00 + ":"
                    + String.format("%02d", 00) …
Run Code Online (Sandbox Code Playgroud)

android android-button android-mediaplayer android-activity

3
推荐指数
1
解决办法
2591
查看次数

如何检测Android Scroll view是否处于空闲状态?

我试图在滚动视图处于空闲状态期间隐藏按钮。该按钮应该仅在滚动时间内不可见。(其余时间按钮应该可见)

scrollView.setOnScrollChangeListener(new ScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        if (scrollX == scrollY)  {
            Button.setVisibility(View.VISIBLE);
        } else if ((scrollY > oldScrollY)) {
            Button.setVisibility(View.INVISIBLE);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

android android-scrollview android-button

3
推荐指数
1
解决办法
3220
查看次数

在按钮上,文本和可绘制元素居中时距离太远

当我使按钮宽度与父级匹配时,可绘制的开始和文本距离太远,并且它们似乎不尊重android:drawablePadding设置。我也尝试过,android:gravity="center"但android:textAlignment="center"没有成功。设置一些paddingStart/End会间接影响它们之间的距离。请参阅下面的结果:

匹配父宽度按钮

按钮的代码:

<Button
            style="@style/ActionButton.Primary.Light.Large"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:drawableLeft="@drawable/ic_filter_and_sort_white"
            android:drawablePadding="0dp"
            android:textAlignment="center"
            android:text="Apply filters"
            app:layout_constraintBottom_toTopOf="@id/someViewBelow"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/someViewAbove" />
Run Code Online (Sandbox Code Playgroud)

样式定义了background, textColor, margins, minDimensions, paddings, radiuses, textSize, textAllCaps, radiuses, stateListAnimator, fontPath- 所以没有什么会影响我正在寻找的内容。

android android-layout android-button material-components material-components-android

3
推荐指数
1
解决办法
1516
查看次数

如何在 Android 上以编程方式更改 Material 组件中的颜色?

我正在寻找一种解决方案来更改某些 Android Material Components 布局对象的颜色。如何以编程方式更改材质按钮中文本或边框的颜色?所有功能都MaterialButton.setTexColor()不起作用。StrokeColor 也是如此。更改必须直接从代码中逻辑地进行。没有 XML 样式,颜色必须能够根据从数据库读取的值实时更改。

像这样的事情不起作用:

//renewSetDate is a Material Button Object
renewSetDate.strokeColor = ColorStateList.valueOf(Color.RED)
renewSetDate.setTextColor(Color.WHITE)
Run Code Online (Sandbox Code Playgroud)

这是 Material 按钮的 XML 布局

<com.google.android.material.button.MaterialButton
                        android:id="@+id/addSubs_btnSet_date"
                        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="15dp"
                        android:layout_marginTop="10dp"
                        android:layout_marginEnd="15dp"
                        android:text="Imposta data di rinnovo abbonamento"
                        android:textAlignment="center"
                        android:textColor="#FFFFFF"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.0"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/addSubs_detailTitle"
                        app:strokeColor="@color/colorAccent" />
Run Code Online (Sandbox Code Playgroud)

颜色必须从数据库中保存的模板中读取。我无法为每个模板创建 XML 样式。

我发现只有知道 XML 模板中哪些属性的人才能更改布局颜色,这真的很烦人。

这些是依赖项

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.viewpager2:viewpager2:1.0.0-rc01'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0' …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-button android-design-library material-components-android

3
推荐指数
1
解决办法
4470
查看次数

在约束布局中按钮未完全粘在屏幕底部

我将一个按钮限制在屏幕底部,但不幸的是,屏幕底部边框和按钮底部边框之间有一个小间隙:

在此输入图像描述

我的 XML:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/navigationTabs"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        app:layout_constraintTop_toTopOf="parent"
        app:tabMinWidth="100dp"
        app:tabRippleColor="@null"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="BUTTON"
        android:layout_margin="0dp"
        app:layout_constraintBottom_toBottomOf="parent"/>

    <LinearLayout
        android:id="@+id/fragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/navigationTabs" />


</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

造成这种差距的原因是什么?我怎样才能摆脱它?

android android-button android-constraintlayout

3
推荐指数
1
解决办法
7200
查看次数

在 Android 中以编程方式创建包含具有自定义样式的 MaterialButton 的 MaterialButtonToggleGroup

我正在尝试创建一个 MaterialButtonToggleGroup,其中包含材质按钮,并且我想使用自定义样式来做到这一点。

我能够使用 xml 创建它,但是,我需要以编程方式实现相同的结果

这是我对 xml 所做的事情(我使用 LinearLayout 作为根视图):

<com.google.android.material.button.MaterialButtonToggleGroup
  android:id="@+id/group_item_size"
  style="@style/ButtonsToggleGroupStyle"
  >

  <com.google.android.material.button.MaterialButton
    style="@style/ButtonStyle"
    android:text="Small"
    />

  <com.google.android.material.button.MaterialButton
    style="@style/ButtonStyle"
    android:text="Large"
    />

  <com.google.android.material.button.MaterialButton
    style="@style/ButtonStyle"
    android:text="Family"
    />

</com.google.android.material.button.MaterialButtonToggleGroup>
Run Code Online (Sandbox Code Playgroud)

以及样式的代码:

      <style name="ButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
    <item name="cornerRadius">@dimen/margin_20dp</item>
    <item name="android:padding">@dimen/margin_8dp</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:layout_weight">1</item>
    <item name="android:textSize">@dimen/text_size_14sp</item>
    <item name="android:textAllCaps">false</item>
    <item name="android:textColor">@drawable/drawable_button_toggle_group_text_selector</item>
    <item name="android:backgroundTint">@drawable/drawable_button_toggle_group_selector</item>
  </style>

  <style name="ButtonsToggleGroupStyle">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:orientation">horizontal</item>
    <item name="android:layout_marginStart">@dimen/margin_32dp</item>
    <item name="android:layout_marginTop">@dimen/margin_12dp</item>
    <item name="android:layout_marginEnd">@dimen/margin_32dp</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助

android android-layout android-button android-togglebutton material-components-android

3
推荐指数
1
解决办法
2270
查看次数

更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

这是我的材质按钮代码:

<com.google.android.material.button.MaterialButton
    android:id="@+id/next_button"
    android:layout_width="224dp"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentBottom="true"
    android:layout_marginStart="68dp"
    android:layout_marginTop="510dp"
    android:layout_marginEnd="68dp"
    android:layout_marginBottom="68dp"
    android:background="@color/colorPrimary"
    android:minHeight="60dp"
    android:text="@string/onboarding_next_button"
    android:textColor="@android:color/white"
    app:cornerRadius="25dp" />
Run Code Online (Sandbox Code Playgroud)

将材质库从 1.1.0 更新到 1.2.0 后,app:CornerRadius 将被忽略。我尝试使用形状主题遵循材质文档,但控件仍然完全方形

android android-button material-design material-components-android materialbutton

3
推荐指数
1
解决办法
1634
查看次数

底部工作表按钮自定义样式不起作用

在我的BottomSheetDialogFragment中,我有一个按钮,我想让这个按钮背景变成圆形并带有灰色边框。

这是我的圆形背景可绘制的“rounded_tranparent_background.xml”:

 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle">
<solid android:color="#FFF" />
<stroke
    android:width="1dp"
    android:color="#8A8383" />
<corners
    android:bottomLeftRadius="10dp"
    android:bottomRightRadius="10dp"
    android:topLeftRadius="10dp"
    android:topRightRadius="10dp" />
 </shape>
Run Code Online (Sandbox Code Playgroud)

我将此背景应用于我的底部表单按钮。

这是底部表单布局代码:

<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">


<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btnFollowUnfollow"
        android:background="@drawable/rounded_tranparent_background"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/avenir_next_ltpro_medium"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:text="Unfollow"
        android:textColor="@color/colorGreyDark"
        app:layout_constraintBaseline_toBaselineOf="@+id/tvTitle"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.71"
        app:layout_constraintStart_toEndOf="@+id/tvTitle" />

    //...other code...

 </androidx.constraintlayout.widget.ConstraintLayout>

 </layout>
Run Code Online (Sandbox Code Playgroud)

这是我的底部表单对话框的样式

<style name="AppBottomSheetDialogTheme"
    parent="Theme.Design.Light.BottomSheetDialog">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="colorPrimary">@color/colorBlue</item>
    <item name="colorPrimaryDark">@color/colorBlueDark</item>
    <item name="colorAccent">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

应用所有这些代码后,我无法实现我想要的目标。我想要的设计是:我正在寻找的按钮设计

我得到了什么我现在得到的按钮设计

如何在底部表单对话框中的按钮上实现自定义设计?

android android-button android-dialogfragment android-styles android-bottomsheetdialog

3
推荐指数
1
解决办法
4657
查看次数

如何创建带有图标和文本的切换按钮

在 android 中构建切换按钮的最佳方法是什么,如下图所示。我花费的时间比我愿意承认的要多,但到目前为止,似乎不可能同时获得圆形背景和图标。

我的布局

            <ToggleButton
            android:id="@+id/addButton"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:background="@drawable/button_bg_rounded_corners"
            android:button="@drawable/check"
Run Code Online (Sandbox Code Playgroud)

查看

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/app_checkmark"
        android:state_checked="true" />
    <item android:drawable="@drawable/app_close"
        android:state_checked="false"/>
    </selector>
Run Code Online (Sandbox Code Playgroud)

BG

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">

        <shape android:shape="rectangle" >
            <solid android:color="@color/appcolor_yellow" />
            <corners android:radius="20dp" />
        </shape>
    </item>
    <item android:state_checked="false" >
        <shape android:shape="rectangle" >
            <solid android:color="@color/appcolor_green"/>
            <corners android:radius="20dp" />
        </shape>
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

按钮示例

我得到了什么

在此输入图像描述

android android-layout android-button material-components-android

3
推荐指数
1
解决办法
3764
查看次数

为什么按钮上的图标看起来这么大?

我试图为按钮提供一个图标,但它看起来像这样!

在此输入图像描述

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.button.MaterialButton
        style="@style/Widget.MaterialComponents.Button.Icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test Button"
        app:icon="@drawable/ic_facebook"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

我试图在互联网上找到相关问题,但不幸的是找不到与此问题相关的任何内容,或者我搜索得不够

android android-button material-design material-components-android

3
推荐指数
1
解决办法
907
查看次数