2016-02-27 156 views
1

我有帶文字和自定義背景的按鈕。當我按下按鈕時,背景略微向下移動(「按下效果」)。但文本保持在相同的位置。更改按鈕上文字在按鈕上的位置

當按下按鈕時,應該如何移動文字?

我試過文本選擇器,選擇器填充,但它沒有爲我工作。

按鈕:

<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> 
+0

你能分享你的xml文件嗎 – Nike15

+0

你有沒有找到解決方案?我有同樣的問題.. –

+0

或多或少,看看那裏:http://ru.stackoverflow.com/questions/497519/%D0%A1%D0%BC%D0%B5%D1%89%D0%B5 %D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0-%D0%BD%D0%B0-%D0% BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B5-%D0%BF%D1%80%D0%B8-%D0%BD%D0%B0%D0%B6%D0% B0%D1%82%D0%B8%D0%B8-%D0%BD%D0%B0-%D0%BD%D0%B5%D0%B5。但之後的佈局有問題。 –

回答

0

您可以通過編程方式更改按鈕的填充。

分配按鈕的ID在XML文件中:

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 

的方法被定義爲:

公共無效setPadding (int left,int top,int right,int bottom)

in the View class in th e Android SDK。

+0

是的,我也試過了。問題:點擊後應用填充。 TouchEvent不合適。我認爲,有一種更簡單的方法。 Thx回答。 –