【问题标题】:Image related issue when creating button dynamically动态创建按钮时的图像相关问题
【发布时间】:2013-09-17 06:33:12
【问题描述】:

在我的示例应用程序中,我尝试使用以下代码动态创建Button。一切正常,但是一旦我将背景图像设置为按钮,我注意到图像变成椭圆形。但实际上图像是圆形的。为什么会发生这种情况,在我的代码中有什么要做的吗?帮我解决这个问题。

ma​​in.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/calendar_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:orientation="vertical" >

    <ViewFlipper
        android:id="@+id/flipview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:background="#ffffff">

        <LinearLayout
            android:id="@+id/liVLayout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical|center_horizontal"
            android:orientation="vertical" >
        </LinearLayout>
    </ViewFlipper>

</RelativeLayout>

Java 代码

public class MainActivity extends Activity 
{
    private Button[][]          m_pBtnDay; 
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        m_pBtnDay = new Button[6][7];
        
        initDay();
    }
    
    public boolean initDay()
    {
        LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout);
        LinearLayout rowLayout = null;
        
        LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1);

        for (int i = 0; i<6; i++)
        {
            rowLayout = new LinearLayout(this);
            rowLayout.setWeightSum(7);
            
            layoutVertical.addView(rowLayout, param);
            
            for(int j=0; j<7; j++)
            {
                m_pBtnDay[i][j] = new Button(this);             
                m_pBtnDay[i][j].setTextSize(15);    
                m_pBtnDay[i][j].setBackgroundResource(R.drawable.theme1_cal_button_selected);
                rowLayout.addView(m_pBtnDay[i][j], param);                                                          
            }                           
        }                       
        
        return true;
    }       
}

截图

【问题讨论】:

    标签: android image button


    【解决方案1】:

    您的问题的解决方案是在可绘制目录中使用Bitmap,如下所示。

    创建an xml bitamp文件,在drawable目录下命名为button_background.xml,并放入以下短代码。

    <?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/ic_launcher"
        android:tileMode="disabled" android:gravity="top" >
    </bitmap>
    

    用你的图片替换ic_launcher。然后,不要使用背景图片,而是使用以下代码。

    <Button
        android:id="@+id/buttonok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_background"
        android:text="your Text" />
    

    Bingo.. 这不会拉伸您的图像。

    【讨论】:

    • 但是在那个按钮里面我也设置了一个文本..实际上我正在创建一个计算器类型的应用程序..所以如果我使用 imageView 我如何在它上面设置文本
    • 但是如何在 ImageButton 上设置文本...因为在 imageButton 上没有名为 settext 的函数。同样,我如何检索在 imageButton 上设置的文本,如 getText 方法
    • @AndroidCoder,对于我的误解,我深表歉意。 ImageButton 确实不提供 text 属性。 :(
    • @AndroidCoder,对你来说是个好消息。解决了你的问题。只需检查我编辑的答案。 :)
    • 好的...我会试试这个..但是我的按钮是在代码中创建的而不是在 xml 文件中..这在我的代码中是否有效
    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多