GridView的不同列大小 [英] GridView with different column sizes
问题描述
试图让高分名单,这是滚动的,看起来是这样的:
Trying to make a highscore list, which is scrollable, and looks like this:
foo 1000
bar 876
foobar 500
foobarfoo 1
我目前正在做它用一个GridView。我想这个名字列的宽度设置为屏幕和得分列宽为40%,60%。这可能吗?
I am currently doing it with a GridView. I would like to set the name column width to 60% of the screen and the score column width to 40%. Is it possible?
目前,我通过costum适配器尝试。这里是getview funcion吧:
Currently I am trying via a costum adapter. Here is the getview funcion for it:
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv;
if (convertView == null) {
tv = new TextView(context);
tv.setTextSize(25);
tv.setTextColor(Color.WHITE);
if (position % 2 == 0)
{
tv.setLayoutParams(new GridView.LayoutParams((width/10)*6, 50));
}
else
{
tv.setLayoutParams(new GridView.LayoutParams((width/10)*4, 50));
}
}
else {
tv = (TextView) convertView;
}
tv.setText(texts[position]);
return tv;
}
的布局由GridView和在底部的一个按钮建造。 XML文件是:
The layout is built by the gridview and a button at the bottom. The XML file is:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/top">
<GridView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:id="@+id/grid"
android:numColumns="2"
android:columnWidth="0dp"
>
</GridView>
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/backbutton" android:text="@string/backstr"></Button>
</LinearLayout>
那么问题又来了:是否可以设置GridView控件,让加入不同大小的列?如果是的话,我的做法是好的? (或许不会,因为它不工作:))难道我只是错过了什么?
So the question again: Is it possible to set the GridView to let adding different sized columns? If yes, then my approach is good? (Probably not, since it is not working :)) Did I just miss something?
感谢你在前进!
推荐答案
工作就像一个魅力!非常感谢阿比纳夫,谁做了一个善意的提醒。这里是code大家谁都有同样的问题:
Working like a charm! Big thanks to Abhinav, who made a good advise. Here is the code for everyone who has the same problem:
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv1;
TextView tv2;
LinearLayout ll;
if (convertView == null) {
tv1 = new TextView(context);
tv1.setTextSize(25);
tv1.setTextColor(Color.WHITE);
tv1.setGravity(Gravity.LEFT);
tv1.setPadding(5, 5, 5, 5);
tv1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT,
(float) 3.0));
tv2 = new TextView(context);
tv2.setTextSize(25);
tv2.setTextColor(Color.WHITE);
tv2.setGravity(Gravity.RIGHT);
tv2.setPadding(5, 5, 5, 5);
tv2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT,
(float) 4.0));
ll = new LinearLayout(context);
ll.setOrientation(0);
ll.setPadding(5, 5, 5, 10);
tv1.setText(names[position]);
tv2.setText(scores[position]);
ll.addView(tv1);
ll.addView(tv2);
}
else {
ll = (LinearLayout) convertView;
tv1 = (TextView) ll.getChildAt(0);
tv2 = (TextView) ll.getChildAt(1);
tv1.setText(names[position]);
tv2.setText(scores[position]);
}
return ll;
}
和XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/top">
<ListView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:numColumns="2"
android:columnWidth="0dp"
android:id="@+id/list">
</ListView>
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/backbutton" android:text="@string/back"></Button>
</LinearLayout>
如果你认为你能改善这种code(因为我在这个领域的新手)不要犹豫,回复!在此先感谢!
If you think you can improve this code (since I am a newbie in this field) don't hesitate, to reply! Thanks in advance!
这篇关于GridView的不同列大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!