标签: android-button

无法在按钮上设置背景资源

我有一个应用程序,我将一些资源应用于按钮以修改它们的背景。

一切正常,但是当我的应用程序在 onPause 后进入 onResume 时,我无法再设置背景。

我有一组 18 个按钮,当我进入 onResume 时,我调用:

for (int i = 0; i < max; i++) {
    Button b = l.get(i);
    b.setBackgroundResource(R.color.green);
}
Run Code Online (Sandbox Code Playgroud)

在 li 中有从findViewById().

这仅适用于 for 的最后一个元素,但不适用于其他元素。

任何的想法?

** 编辑 **

这是我用于填充数组的代码

btn_1 = (Button)findViewById(R.id.btn_1);
btn_1.setOnClickListener(this);
l.add(btn_1);
Run Code Online (Sandbox Code Playgroud)

这对我所有的按钮都是重复的。

** 第二次编辑 **

public void onResume() {
    btn_1 = (Button)findViewById(R.id.btn_1);
    btn_1.setOnClickListener(this);
    l = new ArrayList<Button>();
    l.add(btn_1);
    ...
    for (int i = 0; i < max; i++) {
        Button b = l.get(i);
        b.setBackgroundResource(R.color.green);
    }
} …
Run Code Online (Sandbox Code Playgroud)

android android-button android-view android-resources

2
推荐指数
1
解决办法
5246
查看次数

如何设置按钮的state_pressed

我使用 xml 文件为按钮着色。在 xml 中有此代码来定义单击按钮时的颜色。

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

    <item android:state_pressed="true" >
        <shape>
            <gradient
                  android:startColor="@color/mainRaddoppiaButtonBackgroundEnd"
                android:endColor="@color/mainRaddoppiaButtonBackgroundStart"

                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/mainRaddoppiaButtonBackgroundStart" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item android:state_focused="true" >
           <shape>
            <gradient
                  android:startColor="@color/mainRaddoppiaButtonBackgroundEnd"
                android:endColor="@color/mainRaddoppiaButtonBackgroundStart"

                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/mainRaddoppiaButtonBackgroundStart" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item>        
        <shape>
            <gradient
                android:startColor="@color/mainRaddoppiaButtonBackgroundStart"
                android:endColor="@color/mainRaddoppiaButtonBackgroundEnd"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/mainRaddoppiaButtonBackgroundStart" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item> …
Run Code Online (Sandbox Code Playgroud)

android android-button

2
推荐指数
1
解决办法
1万
查看次数

Android 如何更改 OnTouchListener 上的按钮背景

您好,我在 xml 中有一个按钮,我OnTouchListener在活动中使用它来button按下和释放。但问题是,当我按下按钮时,背景颜色没有改变。当我扩展时,OnClickListener背景活动可能会发生变化。任何人都可以告诉我的代码有什么问题吗?

 public class pushbuttonActivity extends Activity implements OnTouchListener {
@Override
        public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
            setContentView(R.layout.push_button_layout);
            GPIO_0_B  = (Button) findViewById(R.id.GPIO_0);
        GPIO_0_B.setOnTouchListener((OnTouchListener) this); 
     }

    public boolean onTouch(View v,MotionEvent event) {
            switch(v.getId()) {
                case R.id.GPIO_0 :  GPIOPORT=0;
                            break;

            default      :  break;                  
            }

            if(event.getAction() == MotionEvent.ACTION_DOWN) {
               //Do something on touch    
                 } else if (event.getAction() == MotionEvent.ACTION_UP) {
                  //Do something in release
                 } 
            return true;
        }
Run Code Online (Sandbox Code Playgroud)

Push_button_layout.xml

<RelativeLayout .........
.................
      <Button
        android:id="@+id/GPIO_0" …
Run Code Online (Sandbox Code Playgroud)

android android-button

2
推荐指数
1
解决办法
1万
查看次数

如何在 Android 中的 onClick 侦听器中获取类引用?

我正在尝试在 onClick 侦听器中调用此方法:

        mHelper.launchPurchaseFlow(this,
                SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS,
                RC_REQUEST, mPurchaseFinishedListener, payload);
Run Code Online (Sandbox Code Playgroud)

但是因为它在 onClick 侦听器中,所以对 this 的引用不是对类的引用,而是 onClick 侦听器。如果此代码位于 onClick 侦听器中,是否可以传递类引用?

谢谢!

android android-button

2
推荐指数
1
解决办法
1893
查看次数

如何在两个布局之间放置按钮

我试图在两个布局之间放置一个按钮.

此外,如果我可以提供帮助,当您开始处理不同的屏幕尺寸保证金时,我不希望这样做.(在此图中,我试图将绿色按钮放在两个布局之间)

期望的结果布局

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:background="@color/busy_white">

    <LinearLayout
        android:orientation="vertical"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:gravity="center">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/profile_default_round"
            android:background="@drawable/ring_status_clock_in"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="John Doe"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Manager"/>

    </LinearLayout>

    <RelativeLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/translucent_black_90"
        android:padding="16dp">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_alignParentLeft="true">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Today Total"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="08:32"/>

        </LinearLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_alignParentRight="true">

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Week Total"
                android:gravity="right"/>

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="24:32"
                android:gravity="center"/>

        </LinearLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="-40dp">

        </LinearLayout>

        </RelativeLayout>

    <include layout="@layout/dashboard_clock_in_button" …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-button

2
推荐指数
1
解决办法
3595
查看次数

进度条在按钮中间

我想标准按钮的中间创建一个进度条,如下所示: 进度条

在xml布局中,当我点击进度条时,我确实看到它位于我希望它的位置,但实时,我看不到它,感觉就像隐藏在按钮下方. android studio xml

我试过了 :

  1. 更改视图的位置(进度条上方/下方的按钮)
  2. 不定
  3. 玩ProgressBar的风格

似乎没有什么工作.

这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:elevation="1dp"
        android:text="test button" />

    <ProgressBar
        android:id="@+id/progress"
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button_id"
        android:layout_alignTop="@+id/button_id"
        android:layout_centerHorizontal="true"
        android:indeterminate="true"
        android:indeterminateTint="@android:color/holo_blue_dark"
        android:visibility="visible" />

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

android android-layout android-progressbar android-xml android-button

2
推荐指数
1
解决办法
3672
查看次数

如何在旧 API 版本中将进度条置于按钮前面?

我读了两篇关于这个主题的文章,这篇文章这篇文章

但两者都给出了解决方案,例如更改海拔或平移。

问题是关于在不支持海拔或平移属性的旧版本中将进度栏放在按钮前面。

我怎样才能在 XML 和 Java 中做到这一点?

或者它是无效的。

<?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"
    tools:context="com.business.abdelhafiz.omar.civiltaif.LoginActivity">

    <ImageView
        android:src="@drawable/home_civil"
        android:scaleType="fitXY"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ProgressBar
        android:id="@+id/login_progressbar"
        android:layout_centerInParent="true"
        android:layout_width="@dimen/image_height"
        android:layout_height="@dimen/image_height" />

    <Button
        android:id="@+id/login_email"
        android:layout_centerInParent="true"
        android:text="@string/login_email"
        android:onClick="loginEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/login_anonymous"
        android:layout_centerInParent="true"
        android:layout_below="@id/login_email"
        android:text="@string/login_anonymous"
        android:onClick="loginAnonymous"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

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

这是一个屏幕截图

在此输入图像描述

我想将进度条放在按钮前面

编辑:

没有什么对我有用,所以当我需要显示进度栏时,我只会隐藏按钮。

感谢您的帮助。

java xml android android-progressbar android-button

2
推荐指数
1
解决办法
4494
查看次数

Button.setEnabled(false) 不会使按钮变灰

Button我的申请中有一个。当我使用setEnabled(false)它时,它变成灰色。但是,如果我首先修改 的背景Button然后调用setEnabled(false)它,它不会变成灰色(但未Button启用)。为什么会这样?无论发生什么情况,我怎样才能让它变成灰色?

android android-button

2
推荐指数
1
解决办法
1725
查看次数

Material Design 组件按钮全局主题覆盖损坏

我想简单地将样式应用到这样的主题级别上的所有按钮

<style name="BaseTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
     ...    
    <item name="buttonStyle">@style/DefaultButton</item>
</style>

<style name="DefaultButton" parent="Widget.MaterialComponents.Button">
    <item name="android:textColor">@color/whatever</item>
</style>

<Button
    android:id="@+id/addChannelButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:layout_margin="16dp"
    android:text="Add room" />
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?它会在 appcompat

// 如果我使用Theme.MaterialComponents.Light.NoActionBar.Bridge,那么它有效

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

2
推荐指数
1
解决办法
2468
查看次数

无法以编程方式更改 backgroundTint

安卓工作室 3.6

在我的风格。xml

 <style name="buttonStyle">
        <item name="android:textColor">@color/default_button_textColor</item>
        <item name="android:backgroundTint">@color/button_bg_color</item>
        <item name="android:textSize">18sp</item>
        <item name="android:textAllCaps">true</item>
    </style>

    <style name="buttonClickStyle">
        <item name="android:textColor">@color/button_bg_color</item>
        <item name="android:backgroundTint">@color/button_click_bg_color</item>
        <item name="android:textSize">18sp</item>
        <item name="android:textAllCaps">true</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

在 xml 布局中:

 <com.google.android.material.button.MaterialButton
            android:id="@+id/buttonStartSearchBluetooth"
            style="@style/buttonStyle"
            android:layout_width="0dp"
            android:layout_height="@dimen/button_height"
            android:layout_margin="@dimen/button_margin"
            android:onClick="onClickButtonStartSearch"
            android:text="@string/start_search"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
Run Code Online (Sandbox Code Playgroud)

当单击按钮时,我尝试像这样更改样式:

dataBinding.buttonStartSearchBluetooth.setTextAppearance(R.style.buttonClickStyle)
Run Code Online (Sandbox Code Playgroud)

但它只改变文本颜色。没变backgroundTint

为什么?

android android-button android-styles material-components material-components-android

2
推荐指数
2
解决办法
1948
查看次数