我有一個需求,我需要一個LinearLayout,並且對於這個佈局的每個單元格,我會有一個不同的背景。 這是設計師的例子:具有不同背景的單元的LinearLayout?可能?
http://img823.imageshack.us/img823/1857/untilied.png
有什麼辦法,我只能通過XML實現這一目標,還是應該在運行時完成?我怎樣才能得到線性佈局的細胞數量並處理這個數字?
非常感謝, 費利佩
我有一個需求,我需要一個LinearLayout,並且對於這個佈局的每個單元格,我會有一個不同的背景。 這是設計師的例子:具有不同背景的單元的LinearLayout?可能?
http://img823.imageshack.us/img823/1857/untilied.png
有什麼辦法,我只能通過XML實現這一目標,還是應該在運行時完成?我怎樣才能得到線性佈局的細胞數量並處理這個數字?
非常感謝, 費利佩
您可以定義XML中的每個TextView的背景。只需使用android:background
http://developer.android.com/reference/android/view/View.html#attr_android:background
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="text"
android:background="@color/blue" />
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="text"
android:background="@color/red" />
</LinearLayout>
要dinamically改變,你可以做這樣的事情:
TextView txtView1 = (TextView) findViewById(R.id.textView1);
txtView1.setBackgroundResource(R.color.green);
問題是,對於一個單元格,我將需要三個水平放置的TextViews。而且,我的背景不是顏色,而是可繪製的。 –
在我的例子中,我使用了一種顏色,但是如果你閱讀'setBackgroundResource'文檔,你會發現你可以使用drawable。我不完全明白你想要什麼。 –
想象一下,我有一個父線性佈局(方向垂直)。對於此線性佈局的每個單元格,我將有一個子線性佈局。這個孩子只有一個單元格(水平方向),並有三個文本視圖。 現在,我需要父LinearLayout的每個單元格具有不同的drawable。 有意義嗎? –
因爲你不知道項目的數量要添加,您應該動態添加TextView,而不是通過XML靜態添加。你應該首先對設備屏幕的高度,就應該添加TextViews基於此formaula父容器:
沒有TextViews =(顯示器高度)/(一個文本視圖的高度)的
現在,您只需動態創建TextView並將它們添加到循環中的父容器中即可。
下面是該示例代碼:
public class DynamicActiviy extends Activity {
/*parent container*/
LinearLayout root;
/*colors*/
Integer[] colors = {R.color.red1,R.color.red2,R.color.red3,R.color.red4,R.color.red5,
R.color.red6,R.color.red7,R.color.red8,R.color.red9,R.color.red10};
/*text view height*/
final int MAX_HEIGHT = 60;
/*display height*/
int displayHeight;
/*no of text views to be added*/
int noTextViews;
TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.backs);
root = (LinearLayout)findViewById(R.id.root);
displayHeight = getWindowManager().getDefaultDisplay().getHeight();
noTextViews = displayHeight/MAX_HEIGHT;
int size = colors.length;
LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, MAX_HEIGHT);
for(int i=0; i<noTextViews; i++)
{
text = new TextView(this);
text.setBackgroundResource(colors[i%size]);
text.setGravity(Gravity.CENTER_VERTICAL);
text.setPadding(20, 0, 0, 0);
text.setText(colors[i%size]+ "");
root.addView(text,lp);
}
}
}
會讓你有什麼在LinearLayout中?一個ListView? –
不,只是TextViews –
那些TextViews是動態添加的還是已經在XML中定義的? –