1

私はリストビューを持っています。私のポイントは、そのビューで要素の1つを選択した後、その要素のすぐ下にメニューバーを表示したいということです。私がやろうとしているのは、アプリ Any.Do のようなものです。

ここに私がやろうとしていることの写真があります。

どうすればできますか?むしろ GreenDroid を使用しないでください。

配列を埋めるには、次のコードを使用します。

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>

編集:

クリックした位置を見つける方法を見つけました。問題は、その相対的な位置です。つまり、配列の 2 番目の項目をクリックすると、7 項目ごとにメニューバーが 2 番目の位置に表示されます (ページを埋める項目の数)。この位置は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);

これが問題の理解に役立つことを願っています

4

2 に答える 2

0

あなたがすることは、あなたのリストアイテムのレイアウトxmlにもメニューがありますが(垂直のリニアレイアウトに包まれています)、それをandroid:visibility="gone"に設定します。アイテムが押されると、その非表示のメニュー ビューが表示されます。

于 2012-04-20T10:33:21.267 に答える
0

同時に表示するビューの数によって異なります。1つしかなく、プログラミングをあまり行わずに目立たせたい場合は、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);
于 2012-04-20T10:58:22.777 に答える