在我的秒表应用程序中,开始按钮应该启动声音,暂停按钮应该停止声音。到目前为止,我的程序运行良好。
但是在播放声音的过程中,如果我返回或最小化应用程序,声音不会停止。它会继续播放(一直播放,即使设备处于空闲状态)。奇怪的是,当我重新打开应用程序以停止声音时,它永远不会停止。怎么解决这个问题呢?
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) 我试图在滚动视图处于空闲状态期间隐藏按钮。该按钮应该仅在滚动时间内不可见。(其余时间按钮应该可见)
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: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
我正在寻找一种解决方案来更改某些 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
我将一个按钮限制在屏幕底部,但不幸的是,屏幕底部边框和按钮底部边框之间有一个小间隙:
我的 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)
造成这种差距的原因是什么?我怎样才能摆脱它?
我正在尝试创建一个 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
这是我的材质按钮代码:
<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
在我的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
在 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
我试图为按钮提供一个图标,但它看起来像这样!
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