Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态创建按钮时的图像相关问题_Android_Image_Button - Fatal编程技术网

Android 动态创建按钮时的图像相关问题

Android 动态创建按钮时的图像相关问题,android,image,button,Android,Image,Button,在我的示例应用程序中,我尝试使用下面的代码动态创建按钮。一切正常,但一旦我设置了按钮的背景图像,我注意到的是图像变成椭圆形。但实际上,图像是圆形的。为什么会发生这种情况,我的代码中有什么要做的吗?帮我解决这个问题 main.xml文件 <?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/a

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

main.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>
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;
    }       
}

Jave代码

<?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>
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;
    }       
}
公共类MainActivity扩展活动
{
私人按钮[][]m_pBtnDay;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
m_pBtnDay=新按钮[6][7];
initDay();
}
公共布尔initDay()
{
LinearLayout Layout垂直=(LinearLayout)findViewById(R.id.liVLayout);
LinearLayout rowLayout=null;
LayoutParams param=新的LinearLayout.LayoutParams(LayoutParams.MATCH_父项,LayoutParams.WRAP_内容,1);

对于(int i=0;i问题的解决方案是在可绘制目录中使用
Bitmap
,如下所示

创建一个xml位图文件,将其命名为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>

答对了。这不会拉伸你的图像。

但在该按钮内,我还设置了一个文本。实际上,我正在创建一个计算器类型的应用程序。因此,如果我使用imageView,如何在其上设置文本,但如何在ImageButton上设置文本…因为ImageButton上没有名为settext的函数。同样,我如何检索ImageButton上设置的文本我喜欢getTextmethod@AndroidCoder,对于我的误解,我非常抱歉。
ImageButton
确实没有提供文本属性。(@AndroidCoder,好消息。解决了您的问题。请检查我编辑的答案。:)好的……我会尝试一下。但是我的按钮是在代码中创建的,而不是在xml文件中。这在我的代码中有效吗