2011-08-17 246 views
2

我想创建一个3行按钮的布局,并且我想让它们中的每一个宽度为屏幕宽度的30%。 这样做的最好方法是什么?按钮大小和按钮按下背景颜色的变化

我的第二个问题是, 如何定义按钮的按下颜色? 我希望按钮变成绿色,按下时变成红色。

谢谢! 马尔科

+0

你想让它们在发布时再次变成绿色吗? – MByD

+0

是的,回到绿色:) –

回答

5

做颜色的按钮,最好的办法是为您创建自定义可绘按钮,当按下/活动/残疾/集中(在我的例子中,我使用button_faded.png,button_down.png & button_up.png)然后定义一个xml来告诉按钮如何使用它:

button.xml:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_faded" 
      android:state_enabled="false" /> 
    <item android:drawable="@drawable/button_down" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_up" 
      android:state_focused="true" /> 
    <item android:drawable="@drawable/button_up" /> 
</selector> 

然后在你的布局将背景设置为"@drawable/button"

或在您的styles.xml更好的创建按钮样式:

<style name="Button"> 
    <item name="android:layout_width">fill_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textColor">#000000</item> 
    <item name="android:textSize">19sp</item> 
    <item name="android:background">@drawable/button</item> 
    <item name="android:gravity">center</item> 
    <item name="android:paddingLeft">0dp</item> 
    <item name="android:paddingRight">0dp</item> 
    <item name="android:paddingTop">5dp</item> 
    <item name="android:paddingBottom">5dp</item> 
</style> 

,并在布局XML告诉按钮使用的样式:

<Button style="@style/Button" /> 

只要按钮的布局...如果你正在寻找每个屏幕的1/3,创建一个水平的LinearyLayout con保留了所有三个按钮。将按钮宽度设置为fill_parent,并给它们所有相同的布局权重,比如说'1'...这应该用3个按钮填充行,每个按钮的大小相同。然后,您可以使用布局边距或填充来调整它们之间的空间。

1
Display mDisplay= activity.getWindowManager().getDefaultDisplay(); 
int width= mDisplay.getWidth(); 
int Height= mDisplay.getHeight(); 

if(width>height) 
{ 
//Landscape 
//set your landscape drawable 
} 
else 
{ 
//portrait 
//set your portrait drawable 
} 

现在采取宽度可变的30%,而对于颜色只是用不同的状态绘制看到here