1
我想提出一個上下文菜單列表視圖。這似乎很簡單,但我得到了一些有趣的行爲。該列表視圖有兩個字段,一個textview和一個editText。長按會在EditText上打開菜單,但在列表視圖中沒有其他位置。 以下是代碼段。Android的ListView的上下文菜單
public class ManageClass extends ListActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.manageclass);
//Tons of not relevant stuff that I would be happy to provide.
pfdata = new PortfolioData(this);
try {
Cursor cursor = getClasses();
showClasses(cursor);
} finally {
pfdata.close();
}
}
private Cursor getClasses() {
String sql = "select c._id, c.NAME as NAME , c.percentage as PERCENTAGE "
+ "from asset_classes c;";
SQLiteDatabase db = pfdata.getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
startManagingCursor(cursor);
return cursor;
}
private void showClasses(Cursor cursor) {
adapter = new MySimpleCursorAdapter(this, R.layout.classrow, cursor,
FROM, TO, t);
// Log.d("TEST", Integer.toString(adapter.getCount()));
setListAdapter(adapter);
adapter.notifyDataSetChanged();
//I've tried moving this line around but it hasn't made a difference.
registerForContextMenu(getListView());
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, 0, 0, "A");
menu.add(Menu.NONE, 1, 1, "B");
menu.add(Menu.NONE, 2, 2, "C");
}
最後,這點我承認佈局本身過於複雜
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/editText1"
android:layout_width="300px"
android:layout_height="wrap_content"
android:text="@string/TCLabel" />
<TextView
android:id="@+id/classtotalpercentage"
android:layout_width="109dp"
android:layout_height="wrap_content"
android:textSize="50px" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/AddClassLabel"
android:layout_width="200px"
android:layout_height="wrap_content"
android:layout_weight="0.38"
android:text="@string/AddClassLabel" />
<Button
android:id="@+id/addclass_button"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="@string/addclassbutton_label" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/grey"
android:orientation="horizontal"
android:padding="10sp" >
<TextView
android:id="@+id/assetclassHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/assetclassHeader"
android:width="200dp" />
<TextView
android:id="@+id/percentageHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/assetclassHeader"
android:text="@string/percentageHeader"
android:width="100dp" />
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:fadeScrollbars="false"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" />
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_list_data" />
</RelativeLayout>
</LinearLayout>
我明白任何建議。如果可能的話,我希望textview上的菜單而不是edittext。
更新。我發現它與EditText有關。如果我將其更改爲textview或將其全部刪除,則所有內容都按照原樣運行。
我感謝你的幫助。我已經改變了我對這個屏幕的整個方法,所以我不能確定它會照顧我所看到的。 – Clavijo 2012-10-17 16:20:23
我在列表元素有同樣的問題HorizontalScrollView;你的回答幫助了我。謝謝。 – vivek 2015-08-18 06:52:43