繁体   English   中英

按下时更改按钮上文本的位置

[英]Change position of Text on Button when pressed

我有带有文本和自定义背景的按钮。 当我按下按钮时,背景会稍微向下移动(“按下效果”)。 但是文本保持在同一位置。

当按下按钮时,我应该怎么做才能移动文本?

我尝试了文本选择器,选择器填充,但对我而言不起作用。

按钮:

<Button
     android:background="@drawable/button_blue"  
     android:layout_height="wrap_content"
     android:textSize="30sp"
     android:textColor="@drawable/selector_txt"
     android:text="Push me"/>

选择:

<selector>
  <item android:drawable="@drawable/button_blue_pressed" android:state_pressed="true" />
  <item android:drawable="@drawable/button_blue_unpressed" />
</selector>

按钮状态:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:right="3dp"
    android:top="3dp">
    <shape>
        <solid android:color="#aac2bfbf" />
    </shape>
</item>
<item android:right="2dp"
    android:top="2dp">
    <shape >
        <gradient
            android:endColor="@color/darkFab"
            android:startColor="@color/actionBackColor" />
    </shape>
</item>
</layer-list>

<layer-list>
<item
    android:right="3dp"
    android:top="3dp">
    <shape>
        <solid android:color="#aac2bfbf" />
    </shape>
</item>
<item
    android:bottom="2dp"
    android:left="2dp">
    <shape>
        <gradient
            android:endColor="@color/darkFab"
            android:startColor="@color/actionBackColor" />
        <stroke
            android:width="1dp"
            android:color="@color/disabled" />
    </shape>
</item>
</layer-list>

文字选择器:

<selector>
  <item  android:color="@color/colorPrimary" android:state_pressed="true" />
  <item android:color="@color/colorAccent" />
</selector>

您可以在按下按钮时以编程方式更改按钮的填充。

在您的XML文件中为按钮分配一个ID:

android:id="@+id/button_id

然后,无论您在哪里处理按钮,都请按:

Button myButton = (Button) findViewById(R.id.button_id);
myButton.paddingTop(0, X, 0, 0); // X will be in pixles, I believe

该方法定义为:

public void setPadding(左向左,向右上方,向右向右,向下向内)

在Android SDK的View类中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM