我使用普通的LinerLayouts来创建我的设计。
我的设计很简单......只是一个ImageButtons网格显示他们的照片。为了给他们一个好看,我使用的是roundcorners.xml文件。像这样:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFFFF"/>
<corners android:radius="10dip"/>
<stroke android:width="8dip"/>
<size android:height="8dip"/>
</shape>
我曾经创建过我的整个屏幕,然后将其设置为这样的视图:
setContentView(myLinearLayoutFullOfImageButtons);
好的... ImageButtons曾经很好地出现在2X4网格中,周围有一个漂亮的圆角黑角。
现在我正在使用ViewFlipper而不是上面的代码,我正在使用它:
viewFlip.addView(myLinearLayoutFullOfImageButtons);
它有效,因为我在运行时需要很多屏幕。
显示了ImageButtons,BUUUUUTTTT ......缺少圆角!他们只是没有出现!现在我只有平坦无聊的图像按钮。
下面是完整的代码:
viewFlip = (ViewFlipper) findViewById(R.id.flipper);
//creates a linearlayout
//this linearlayout will contain "lines", those lines will be new linear layouts
LinearLayout lgeral = new LinearLayout (this);
lgeral.setOrientation(LinearLayout.VERTICAL);
lgeral.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1f));
int qtyOfLines = 2;
int qtyOfColumns = 4;
int controle = 0;
//creates "n" linearlayouts, according to the number of lines
for (int j = 0; j < qtyOfLines; j++) {
//creates one "line", a linearlayout
//this will be horizontal, since imagebuttons will be placed, side by side
//like a grid of 2 lines and 4 columns
LinearLayout l1 = new LinearLayout (this);
l1.setOrientation(LinearLayout.HORIZONTAL);
l1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1f));
//this framelayout will contain the imagebutton and textview
FrameLayout fl;
//the loop below is to create "n" imagebuttons according to the number of columns
for (int i = 0; i < (cursorLinhas.getCount()); i++) {
if(controle==cursorLinhas.getCount()){
break;
}
//creates a FrameLayout from layout xml
fl = (FrameLayout)LayoutInflater.from(getBaseContext()).inflate(R.layout.framelayoutstyle, l1, false);
//creates a TextView who will contain the text of imagebutton
TextView textoEscrito;
textoEscrito = (TextView)LayoutInflater.from(getBaseContext()).inflate(R.layout.textviewstyle, fl, false);
//creates a imagebutton from layout xml
ImageButton btn;
btn = (ImageButton)LayoutInflater.from(getBaseContext()).inflate(R.layout.imagebuttonstyle, fl, false);
//sets OnClick for imagebuttons
btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick (View v){
//do whatever
}
});
//adds the imagebutton and textview to the FrameLayout
fl.addView(btn);
fl.addView(textoEscrito);
//adds FrameLayout to LinearLayout
l1.addView(fl);
controle++;
if (i == (qtyOfColumns -1)){
cursorLinhas.moveToNext();
break;
}
cursorLinhas.moveToNext();
}
//adds the "line" LinearLayout to the general LinearLayout
lgeral.addView(l1);
}
//adds the general LinearLayout to the ViewFlipper.
//I am using this NOW, and it doesn't show the roundcorners!!!
viewFlip.addView(lgeral);
BEFORE I WAS USING THIS:
//setContentView(lgeral);
在roundcorners.xml处于文件夹/布局之前。现在我将它移动到/ drawable并且没有任何改变。
有什么想法吗?
任何帮助将不胜感激。
谢谢!