2012-04-20 2 views
1

У меня есть ListView. Я хочу сказать, что после выбора одного из элементов на этом представлении я хочу показать строку меню справа от этого элемента. То, что я пытаюсь сделать, в значительной степени похоже на приложение Any.Do.Android - Строка меню под элементом списка

Heres a picture того, что я намерен делать.

Как я могу это сделать? Id скорее не использует GreenDroid.

Чтобы заполнить массив, я использую этот код snniped:

TaskBoard.class

setListAdapter(new SimpleAdapter(this, array_tasks, R.layout.dash_tasks, 
    new String[] { "task", "project" , "date"}, new int[] { R.id.dashtask, 
    R.id.taskproject, R.id.final_date})); 

R.layout.dash_tasks является представление им, показывая пользователю. Это код отрезал вызвать строку меню, я хочу, чтобы показать:

dash_tasks.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/menu_bar" 
      style="@style/page" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:baselineAligned="true" 
      android:gravity="center_vertical" 
      android:orientation="horizontal" 
      android:visibility="gone"> 

      <include layout="@layout/menubar"></include> 

     </RelativeLayout> 

Редакции:

Ive понял, как я могу найти положение Im щелчки. Проблема в том, что это относительная позиция. Я имею в виду, что если я нажму на второй элемент массива, строка меню будет отображаться во 2-й позиции каждые 7 пунктов (т. Е. Количество элементов, которые заполняют страницу). Im guessin эта позиция acording на экран, а не ListView ..

lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     View x= parent.getChildAt(position); 
     View a= x.findViewById(R.id.mini_menu_bar); 
     a.setVisibility(View.VISIBLE); 

Я надеюсь, что это поможет вам понять проблему

+0

взгляд это: HTTP : //www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/ –

+0

Вы имеете в виду отображение вида из краев телефона? ;) – waqaslam

+0

Спасибо за ссылку @nibha, но я не хочу использовать QuickAction Dialogs. ;) – Akash

ответ

0

Что вы делаете то, что в вашем списке предметов макета XML у вас также есть меню (завернутый в вертикальный linearlayout), но установите его для android: visibility = "gone". Когда элемент нажат, вы просто покажете, что скрытый вид меню.

+1

Я думаю, что использование диалоговых окон QuickAction более подходит – waqaslam

+0

Я пробовал это, но когда я это делаю, панель меню появляется под каждым элементом, а не тем, который я выбрал. – Akash

+0

Я действительно не хотел использовать этот подход @Waqas. .. – Akash

0

Это зависит от того, сколько просмотров вы хотите отображать одновременно. Если есть только один, и вы хотите, чтобы он сортировался без большого количества программ, я бы пошел за QuickAction. Если у вас одновременно есть несколько просмотров, мое предложение будет заключаться в использовании RelativeLayout и BeLow. То, что вам нужно сделать, довольно просто. Удостоверьтесь, что есть способ найти элемент под включенным, добавьте новое представление под пунктиром и добавьте изменение, которое элемент, который был показан ниже, будет ниже нового элемента. Что-то вроде кода ниже

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.BELOW, view.getId()); 

Другим решением было бы использовать LinearLayout, но требует цикла, чтобы найти индекс элемента отводами, и добавив новый пункт под ним:

parent.addView(subItem, index+1); 
+0

Это не сработало. Я пробовал использовать этот код внутри слушателя, но он ничего не делал ... у меня уже есть RelativeLayout, созданный, я просто хочу установить видимость в видимой области ниже элемента ... – Akash

+0

Приведенный выше код использует 'RelativeView' вместо' ListView'. Кроме того, должен быть установлен также идентификатор просмотра. –

+0

Идентификатор вида уже указан вам (в методе Listener), так что я использовал. – Akash

Смежные вопросы