問題タブ [pagerslidingtabstrip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - PagerSlidingTabStrip ライブラリで既定のタブを設定する
このライブラリを使用しています: PagerSlidingTabStrip
を使用してデフォルトのタブを変更できることはわかっていますpager.setCurrentItem(1);
が、最初のスワイプがうまく機能せず、ジャークが発生します(タブが開始時に中央にあるため)。本当に私は英語でうまく説明できません、ごめんなさい。
私が見つけた他のメソッドは ActionBar に関するもので、ツールバーでは使用できません。
他の方法で既定のタブを設定できますか? アプリをコンパイルして使用pager.setCurrentItem(1);
すると、私が言いたいことがわかります。
前もって感謝します。
android - PagerAdapter を使用した SlidingTabLayout がスライドしない
私は Google からいくつかのコードを実装しています (SlidingTabLayout
とSlidingTabStrip
、オンラインで簡単に見つかります) でそれを使用してViewPager
、Fragment
. 問題は、メインのタブフラグメントクラスの拡張機能として使用PagerAdapter
していることです。これは、アダプタがタブの内容を表示するために使用されます。私のフラグメントCuteCollectionFragment.java
で機能しているタブの基本的なビューを取得できますが、それらをクリックすると、通常、新しいタブが強調表示されるまでに 2 回のクリックが必要です。さらに、スワイプして新しいタブに移動することはできません。私の疑いでは、通常はメイン アクティビティ用のベース コードをFragment
( my のために) に配置する必要があるため、既にスライドNavigation Drawer
している my と競合している可能性があります。Navigation Drawer
しかし、それは単なる推測です。
基本的に、Fragments
アクティビティではなく を使用する必要があります。しかし、それらはどのように競合しており、どうすればそれを修正できますか? 私が見つけたオンラインの例はすべて、アダプターの拡張機能としてではFragmentPagerAdapter
なく使用することを望んでいますが、 v.4 をサポートPagerAdapter
する を使用する必要があるため、それを行うことはできません。各ナビゲーション ドロワー メニュー項目をクリックして に移動できないため、FragmentManager
自分の(ナビゲーション ドロワー コードがあるもの) でそれを使用することはできません。その部分の switch ステートメントで赤いエラーが発生します。私のフラグメントはすべて拡張する必要がありますが、ナビゲーション ドロワーでは拡張できません。拡張する必要があります。CuteMainActivity
Fragment
Fragment fragment
FragmentActivity
Fragment
とにかく、これはとても紛らわしいです。主に2つのことを知りたいだけです:
タブがスライドしないのはなぜですか (なぜ 2 回クリックする必要があるのですか)
TabsAdapter
内部クラスを接続して、タブ クラス (すべて ) を表示するにはどうすればよいですかFragments
。タブ フラグメント クラス/xml の準備はすべて整っていますが (たとえば、PhotoTab.java、VideoTab.java など)、それらをタブ内のビューに接続するにはどうすればよいですか?
実行して自分で調べたい場合は、これが私のプロジェクト全体です。 アイコレクトキュートアプリ
Fragment
スライダータブコードを入れようとしているものと、それらが描画するxmlのみを以下に含めます。さらにファイルが必要な場合は、お知らせください。他に必要になる可能性がある (おそらく必要ない) ものは、呼び出された Google クラスとSlidingTabLayout
、すべての Navigation Drawer コードを配置したSlidingTabStrip
私の場所だけです。しかし、スライドタブを実装する必要があるため、CuteMainActivity
追加/エラーを探す主な場所は私のクラスです。CuteCollectionFragment
この SO postからコードを取得するのに役立ちました。
ご協力いただきありがとうございます!
CuteCollectionFragment.java
fragment_cute_collection.xml
pager_item.xml
これが私のアダプタークラスの1つです。各タブには、独自のクラスとアダプター クラスがあります。これは 1 つです (ただし、方法がわからないため、まだ CuteCollectionFragment.java に接続していません)。
PhotoTab.java
PhotoTab.java、GridViewPhotoAdapter.javaのアダプター
android - PagerSlidingTabStrip - RTL のタイトル テキストが表示されない
私はこのPagerSlidingTabStripを使用しており、英語とアラビア語の両方をサポートしています。これはすべて英語のロケールでは問題なく機能しますが、アラビア語のタイトルで問題に直面しています。アラビア語ロケールでも右から左にスクロールできます。
タブ タイトルのデータには、書式設定された日付文字列 (DD-MMM-YYYY) のみが含まれています。UI にタイトルが表示されませんが、ログを確認すると、これを送信しているため、タイトルが正しく設定されていることがわかります私のリクエストで。
私の最初の仮定は、スタイリングや色に問題があると思っていましたが、そうではありませんでした.
テキストが UI に表示されるようにするにはどうすればよいですか?
PagerSlidingTapStrip からカスタマイズしたクラスは次のとおりです。
更新:この動作は、すべてのデバイスではなく、一部のデバイスでのみ観察されます。
pagerslidingtabstrip - PagerSlidingTabStrip フローティング インジケーター
選択したタブの下にインジケーターをフロートさせるオプションはありますか? ここで問題を説明しました: https://github.com/jpardogo/PagerSlidingTabStrip/issues/67カスタムビューをセットアップできるように、フォークされたライブラリを使用しているため
android - Play Market のように SlidingTabStrip を中央に配置するにはどうすればよいですか?
https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/SlidingTabLayout.java
タブクラスを使用しています。
プロジェクトに適用した後、 この図に示すように (中央に配置されていない) タブが表示されますが、 Play Marketタブのようにタブを中央に配置したいと考えています。
Google Play アプリのようにタブを中央に配置するにはどうすればよいですか?
android - ナビゲーション ドロワー フラグメントを切り替えた後、フラグメント内に ListView 項目を追加できない
編集: 私のスライド タブ フラグメント ATabs に問題があるようです。ATabs フラグメントを使用せずに、ナビゲーション ドロワーを使用してフラグメント A1 と B を切り替えるだけで、すべて正常に動作します。ListItems の追加が可能です。編集された MainActivity:
しかし、ATabs フラグメント (以下の MainActivity を参照) を使用して切り替えて元に戻すとすぐに、ListItems を追加できなくなります。Log.v(LOG_TAG, "Added Item");
追加(+)を押すたびにLogcatが表示されますが。
何が問題の原因なのかわかりません。ATabs がフラグメントではなくアクティビティである必要がある場合、または PagerAdapter が問題を引き起こしている場合。私の ATabs クラスでは、2 つの異なる PagerAdapter を使用してみました。
と
後者の場合、フラグメント全体が正しく表示されず、タブ間の切り替えもできませんでした。
2 つの異なるフラグメント ATabs と B を表示するナビゲーション ドロワーがあります。フラグメント ATabs には 2 つのスライド タブが含まれています。各タブには、別のフラグメント A1 と A2 が保持されます。今まで A2 と B は単純な TextView を持つ単なる空のフラグメントなので、基本的に同じ A2 = B です。フラグメント A1 には、アプリの起動時にListView
いくつかの事前定義された項目が含まれています。EditText
ユーザーは、この特定のフラグメント (A1) の「カスタム」アクション バー内で [追加] を押すことにより、追加の EditText アイテムを追加できます。
一般に、フラグメント A1 は、フラグメント A2 および B とは異なるアクション バー項目を持つ必要があります。これは既に機能しているようです。そのために、各フラグメントにセットを追加し、リソースから目的のメニューを含めて設定するメソッドをsetHasOptionsMenu(true);
オーバーライドします。onCreateOptionsMenu
menu.clear()
これが私の最初の質問です:とにかく、デフォルトのメインアクティビティアクションバーを使用するすべてのフラグメント内でこれを行う必要がありますか?
そして、私の主な問題は、リスト ビューに項目を追加することです。
アプリの起動時に表示される最初のフラグメント A1 からフラグメント A2 に切り替えて、ATabs フラグメント内の A1 に戻ると、すべて正常に動作します。アイテムを追加でき、以前に追加したアイテムも引き続き表示されます。しかし、ナビゲーション ドロワーを使用してフラグメント B と A1 を切り替えると、アイテムを追加できなくなり、以前に追加したアイテムも表示されません。後でデータベースを使用してアイテムを保存しますが、以前と同様にアイテムを追加することも可能です。
私の問題をよりよく示すためのいくつかの画面を次に示します。
アプリはA1フラグメントで起動、A1とA2を切り替え、+アイテムで追加可能
ナビゲーション ドロワーを使用して ATabs と B を切り替えた後、追加項目 (+) が表示されますが、フラグメント A1 には影響しません。
ナビゲーション ドロワーを保持する MainActivity は次のとおりです。フラグメント間の
内部の切り替えonNavigationDrawerItemSelected
が正しいかどうか、または切り替えるたびに新しいフラグメントを作成するかどうかはよくわかりません。Android は以前のフラグメントを削除していますか、それとも複数回の切り替え後にメモリ オーバーフローを引き起こしていますか? そして、私の「最初の」A1フラグメントは、新しく作成されたフラグメントの「後ろに隠れていますか?」私は Android にまったく慣れていないので、ナビゲーション ドロワー フラグメントを切り替えた後にアイテムを追加できない理由が本当にわかりません。
スライド タブ付きのフラグメント ATab:
すでに質問されているように:デフォルトのメイン アクティビティ アクション バーを使用するフラグメント内で呼び出しsetHasOptionsMenu(true)
てオーバーライドする必要がありますか?onCreateOptionsMenu()
以下は、デフォルトのメイン アクティビティ アクション バーを使用したフラグメント A2 (クラス B と同じ) です。
フラグメント A1 は、独自の a1 アクション バー メニュー(追加の追加項目) を使用します。
そして最後にアクションバーのメニュー: main:
a1:
私の問題を解決するために他のコードが必要な場合はお知らせください。
android-fragments - java.lang.ClassCastException: android.widget.LinearLayout は android.support.v4.app.Fragment にキャストできません
java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.support.v4.app.Fragment
アプリでアクティビティを開こうとすると、このエラーが発生しますCuteCollection.java
。奇妙な点は(FragmentPagerAdapter.java:122)
、logcat エラーの最初の行をクリックすると、v4.support
ライブラリ内のファイルの行が表示されることです。そのコードを編集することはできないので、変更できるコードがコードにあるはずです。
このアクティビティにアクセスするにHomeFragment.java
は、フラグメント内のボタンをクリックします。これは、ナビゲーション ドロワー内のフラグメントであり、ナビゲーション ドロワー内のandroid.support.v4.app.Fragment
すべての項目と同じように、拡張機能もあります。
私はそれが私のと関係があるかもしれないと思いますFragmentPagerAdpater
。すべてを に変更しandroid.app.Fragment
ましandroid.support.v4.app.Fragment
たが、それでも同じエラーです。
support.v4
更新:と呼ばれるライブラリの最初の行をクリックするとFragmentPagerAdapter
、そのクラスがFragment fragment = (Fragment)object;
表示され、このメソッドの一部である強調表示されます (ただし、Android からのものであるため、これを編集することはできません)。
ヒントやアドバイスはありますか?ありがとう。
CuteCollectionFragment.java
fragment_cute_collection.xml
ログキャット
android - Android の PagerSlidingTabStrip ですべてのタブに同じ幅を設定するにはどうすればよいですか?
各タブを PagerSlidingTabStrip の最も幅の広いタブと同じ幅にしたいです。タブをスクロールできるように、タブを画面幅を超えて拡張したい.
android - Android Studio でプロジェクトに外部ライブラリを追加するにはどうすればよいですか?
プロジェクトでpagerslidingtabstripを使用したいと考えています。jar ファイルではないためです。どうすればそれをインポートできますか?
いくつかの記事とこれに関する回答を読みましたが、どちらも明確ではなく、すべてが時代遅れであるか複雑です。
手順を明確に提案できますか?