私はAccordion-style widget such as on this pageを作成する最良の方法を考えています。 標準のAndroidツールキットを使用して同じ効果を達成する方法はありますか、カスタムウィジェットを作成する必要はありますか?もしそうなら、もしあれば、どれを延長することをお勧めしますか?Android - accordionウィジェット
答えて
の上にExpandableListView-Sを積み重ねています。 2.2、2.3.x、3.2、および4.0.3でテストされた、お客様のために使用します。私たちのためにかなり良い作品。
次のステップで折りたたんだ/展開したアニメーションを追加しようとしています。ここで
は小さなスクリーンショットです:
で1つだけにしてください。Maciej、アプリケーションとそれは非常によく見えます。アプリケーションに移植したかったのですが、どうすればいいのですか?ファイルをコピーしようとしましたが、ic_resourceに問題があります。私はそれを正しい方法でやっていますか? 1つはすべてのファイルをコピーする必要がありますか? –
@NicholasTJあなたはgithubでそれについて尋ねるべきだと思います...しかし、あなたがここで尋ねてきたので、プロジェクトはアンドロイドライブラリプロジェクトです、それについてはこちらhttp://developer.android.com/tools/projects/index.html# LibraryProjects。あなたはmavenでビルドしてapklibを入手できます - https://code.google.com/p/maven-android-plugin/wiki/ApkLib –
チップをありがとう、私はそれを感謝します、私はあなたのリンクを読むでしょう提供されます。 –
あなたがまだ不思議な場合 - これはボタン/レイアウトのペアを線形レイアウトの中に積み重ねて行うことができます。擬似コードは
<LinearLayout android:orientation="vertical">
<Button android:text="Panel 1"/>
<SomeKindOfLayout android:id="@+id/panel1">
<!-- widgets in first panel go here -->
</SomeKindOfLayout>
<Button android:text="Panel 2"/>
<SomeKindOfLayout android:id="@+id/panel2" android:visibility="gone">
<!-- widgets in second panel go here -->
</SomeKindOfLayout>
<Button android:text="Panel 3"/>
<SomeKindOfLayout android:id="@+id/panel3" android:visibility="gone">
<!-- widgets in third panel go here -->
</SomeKindOfLayout>
<Button android:text="Panel 4"/>
<SomeKindOfLayout android:id="@+id/panel4" android:visibility="gone">
<!-- widgets in fourth panel go here -->
</SomeKindOfLayout></LinearLayout>
を以下の可能性がしようとするもう一つは、私はgithubのでandroid accordion viewプロジェクトをプッシュしている互いに
こんにちは、そのコードはおなじみです... ;-) – CommonsWare
私はそれを世界と共有しなければなりませんでした:)記録のために - これはメイリスト(アンドロイドデベロッパー)の@commonsguyによって与えられたスニペットです – Bostone
私は午前ダイナミックに、アコーディオン用のボタンを作成します。リスト内のボタンの数がわからないからです。私はLinearLayoutを内部にいくつかのビューを持つすべてのボタンのために。誰も私にそれぞれのアコーディオンボタンのonclicklistnerを取得する方法を教えてもらうことができますので、それぞれのLinearLayoutsのvisiblityとGoneを切り替えることができます。 –
私は自分自身を危険にさらすと@Bostoneの答えが最も適切であると言わざるを得ない。あなたが見ることができるように私はあなたに私のコードを与えます。 GitHub MaciejŁopacińskiに感謝します。@SudoPlzはコメントの中で、ドキュメントはまったくありません。私はどこから始めるべきか分からなかった。私はEclipseとAndroid Studioでそれをやろうとしていますが、どちらのプロジェクトでも、その作業の仕組みを理解し始めることはできませんでした。さらに、そのプロジェクトの最後のコミットは約1年前でした。何かがうまくいけば、私は行き詰まってしまうでしょう。それに行く後
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TasksListActivity">
<Button
android:id="@+id/magic_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Magic Btn"/>
<LinearLayout
android:id="@+id/magic_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
</LinearLayout>
</ScrollView>
2.-:
1.-まずあなたがScrollViewにネストボタンとレイアウトを作成する必要があります。だから、さらに遅れることなく、ここ@Bostoneに基づいて、私の解決策がありますあなたの対応するJava、ボタンを見つけ、onClickListenerを設定すると、レイアウトを見つけることができます。
3-だから今onClickListenerの内部にレイアウトがあります。最初のステップで見られるように、レイアウトはデフォルトでGONE
に設定されていますが、今度はそれをvisibleに設定する必要があります。問題は、どうすればそれをもう一度やり直すことができますか?
Button findMagicBtn = (Button) findViewById(R.id.magic_btn);
findMagicBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout findMagicLl = (LinearLayout) findViewById(R.id.magic_layout);
if (findMagicLl.getVisibility() == View.VISIBLE) {
findMagicLl.setVisibility(View.GONE);
} else {
findMagicLl.setVisibility(View.VISIBLE);
}
}
});
これは、あなたが望む何回も互いの上に置くことができます。だから我々は、レイアウトの可視性を取得し、それが非表示または表示されることに基づいて条件を追加します。
あなたが本当にアコーディオンのように見せたい場合は、ボタンを押すことができます。あなたが例で使用して、それの右側にある矢印を置くことができます:
findMagicBtn.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.right_arrow, 0);
をあなたはなくなっている場合onClickListener内および(描画可能に変更することで、矢印の方向を変更するための条件を使用することを行う必要がありますし、下矢印、および上矢印が表示されている場合)。
また、あなたはそれがこのように、アニメーションを追加することによって、より自然に見えるようにすることができます
ScaleAnimation animation = new ScaleAnimation(1f, 1f, 1f, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f);
animation.setDuration(180);
animation.setFillAfter(true);
findMagicLl.startAnimation(animation);
あなたはビューが表示されている間、上記のアニメーションが行われなければならないことを考慮する必要があります。 setFillAfter(true)
はコンテナのサイズを永久に変更するので、そうしたければ、おそらくVIEW.GONE
を使用したくないことに注意してください。この質問には素晴らしいことが書かれていますScale Animation
私はアコーディオンをシミュレートするためにあなたの方法を使いましたが、内部のLinearLayoutはその子コントロールに従って展開しません。そのレイアウトの中で、私はいくつかの要素でListViewを配置しています。私が実行すると、最初の要素だけが表示されますが、リストビューをスクロールして他の項目を1つずつ表示することができます。すべてのアコーディオンはプログラムによって作成されています。この問題を解決する方法とスクロールなしでリストビュー全体を表示する方法のヒントを教えてください。 – jstuardo
@jstuardo申し訳ありませんが、あなたの問題はlistviewsと関係があり、listviewsは常に画面に利用可能なサイズに合わせて十分な要素を読み込んでいると思います。したがって、利用可能なサイズがない場合、リストビューでは、ユーザーが表示する必要がある場合にのみ、ビュー可能領域外の次の要素が作成されます。これはメモリを節約するためです。 私の修正にこの問題がある場合は悲しくなりますが、linearlayoutの高さのプロパティを変更すると修正できると思います。マッチする親を試してください。デフォルトで表示される可視性を使わずに何が起こるかも見てください。 ...リストビューの動作をオーバーライドすることができます。お知らせ下さい。 – cutiko
@jstuardo同様の問題があった場合は、次の情報をお読みください。 http://stackoverflow.com/questions/18411494/android-listview-show-only-one-item http://stackoverflow.com/a/ 32881309/4017501 http://stackoverflow.com/a/31818632/4017501 – cutiko
- 1. ContentPaneを展開しないオプションのカスタムDojo Accordion Containerウィジェット
- 2. Androidウィジェット
- 3. Android:ウィジェットとサービス
- 4. Android Honeycomb GridViewウィジェット
- 5. Android:ウィジェットとレイアウト
- 6. Androidウィジェットのスライドアニメーション
- 7. Androidウィジェットのカスタマイズ
- 8. ウィジェットのAndroidメニュー
- 9. AndroidウィジェットonUpdate()
- 10. 醜いウィジェット - Android
- 11. jQuery Accordion
- 12. Javascript Accordion
- 13. winforms accordion
- 14. Drupal Accordion
- 15. Angularjs Accordion
- 16. Androidのウィジェットは、クリック
- 17. Androidウィジェットの質問
- 18. Androidのシンプルなウィジェット
- 19. Androidホーム画面ウィジェット
- 20. Android:ウィジェットのウィジェットをウィジェットに合わせる
- 21. jQueryのAccordion Boostrap
- 22. Jquery Accordion Trouble - Nesting
- 23. angular-ui IE8 accordion
- 24. スタイリングTwitter Bootstrap Accordion
- 25. フロントエンドCSS HTML Accordion
- 26. ExtJs Accordion Layout Collapse
- 27. ASP.Net MultiView&JQuery Accordion
- 28. horizontal horizontal Accordion
- 29. jquery ui accordionのポインタイベント
- 30. JQuery Horizontal Accordion CSS
私はビューの種類を隠して表示することで良い解決策を得ています。これは.. http://android-puremvc-ormlite.blogspot.com/2011/07/android-simple-accordion-panel.html – Surojit
これはネイティブウィジェットではないのはなぜですか? – mitsest