我想创建一个表,列的文本取决于旋转器。稍后添加行,我可以为指定的单元格上色。它看起来像这样:http://tinypic.com/view.php?pic=2j639xf&s=8#.U-mRRpD-Lcs这个例子是横向的,因为我是在dekstop上开发的,所以我想要一个像那样的表格在android上的纵向。
问题是:1. 当我在设备上运行它时,旋转器消失了2. 我还不知道如何给表格中的每个单元格上色。还是我该提个新问题?
下面是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reservation_schedule);
Spinner spinnerFacility = (Spinner)findViewById(R.id.spinnerFacility);
ArrayList<String> alTop = getTimeTableColumnTop((int)spinnerFacility.getSelectedItemId());
String[] column = alTop.toArray(new String[alTop.size()]);
ArrayList<String> alLeft = getTimeTableColumnLeft();
String[] row = alLeft.toArray(new String[alLeft.size()]);
int rl=row.length+1; int cl=column.length+1;
Log.d("--", "R-Lenght--"+rl+" "+"C-Lenght--"+cl);
ScrollView sv = new ScrollView(this);
TableLayout tableLayout = createTableLayout(row, column,rl, cl);
HorizontalScrollView hsv = new HorizontalScrollView(this);
hsv.addView(tableLayout);
sv.addView(hsv);
setContentView(sv);
}
private ArrayList<String> getTimeTableColumnTop(int facilitySelectedIndex)
{
ArrayList<String> timeTableColumnTop = new ArrayList<String>();
if(facilitySelectedIndex == 0)
{
timeTableColumnTop.add("Discuss Room 1");
timeTableColumnTop.add("Discuss Room 2");
timeTableColumnTop.add("Discuss Room 3");
}else
{
timeTableColumnTop.add("Pri-View 1");
timeTableColumnTop.add("Pri-View 2");
timeTableColumnTop.add("Pri-View 3");
timeTableColumnTop.add("Pri-View 4");
timeTableColumnTop.add("Pri-View 5");
}
return timeTableColumnTop;
}
private ArrayList<String> getTimeTableColumnLeft()
{
ArrayList<String> timeTableColumnLeft = new ArrayList<String>();
for(int i = 8 ; i<17; i++)
{
timeTableColumnLeft.add(i+":00");
}
return timeTableColumnLeft;
}
createTableLayout(row,column,rl,cl);我使用的代码来自http://www.prandroid.com/2014/05/creating-table-layout-dynamically-in.html
activity_reservation_schedule.xml:
<?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:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/reservation_spinner_facility_prompt"/>
<Spinner
android:id="@+id/spinnerFacility"
android:prompt="@string/reservation_spinner_facility_prompt"
android:entries="@array/reservation_facility_entries"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
这里是strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ReservationTab(Schedule)</string>
<string name="reservation_spinner_facility_prompt">Pick a facility</string>
<string-array name="reservation_facility_entries">
<item>Discussion Room</item>
<item>Private Viewing</item>
</string-array>
</resources>
注意:我是Android的新手,我正在使用eclipse。这是我在这里的第一个帖子,请原谅我的英语。
几点:
如果我没理解错的话,
- 你需要"添加"滚动视图到你的根视图linearlayout。
- 为旋转器添加自定义项目选定监听器并根据选择更改布局
如
示例代码:
@OverrideonCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
ll = (LinearLayout)findViewById(R.id.ll);
Spinner spinnerFacility = (Spinner)findViewById(R.id.spinnerFacility);
spinnerFacility.setOnItemSelectedListener(new CustomOnItemSelectedListener());
// more of your code.....
ll.addView(sv) // instead of setContentView(sv)
公共类CustomOnItemSelectedListener实现OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
Toast.makeText(parent.getContext(),
"OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
Toast.LENGTH_SHORT).show();
ll.removeView(sv);
ArrayList<String> alTop = getTimeTableColumnTop(pos);
String[] column = alTop.toArray(new String[alTop.size()]);
ArrayList<String> alLeft = getTimeTableColumnLeft();
String[] row = alLeft.toArray(new String[alLeft.size()]);
int rl=row.length+1; int cl=column.length+1;
Log.d("--", "R-Lenght--"+rl+" "+"C-Lenght--"+cl);
sv = new ScrollView(getApplicationContext());
TableLayout tableLayout = createTableLayout(row, column,rl, cl);
HorizontalScrollView hsv = new HorizontalScrollView(getApplicationContext());
hsv.addView(tableLayout);
sv.addView(hsv);
ll.addView(sv);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
}