12

タブナビゲーション付きのアクションバーがあります。3.1で実行している間はすべて問題ありませんでしたが、4.1デバイスにアプリをインストールすると、タブがスピナーとして表示され、レイアウトデザインが破壊されました。タブがスペースを取りすぎているようです(フラグメントの一部を削除すると、すべてが再び正常に見えます。Android3.1と同じように、この動作を停止してナビゲーションをタブとして再度表示する方法はありますか?誰か知っていますか?

ありがとう!

4

5 に答える 5

18

ここで答えを見つけました。タブを追加した後、ナビゲーションモードを設定する必要がありました。

于 2013-03-20T20:10:07.503 に答える
6

まず、明確にするために、これはバグではなく、意図したとおりに機能します。Googleコードフォーラムでこのディスカッションを参照してください。

しかし、私はあなたがオーバーライドすると次のような解決策に到達しました:

<bool name="abs__action_bar_embed_tabs">false</bool> //for ActionBarSherlock
<bool name="android:action_bar_embed_tabs">false</bool> //for default ActionBar

NAVIGATION_MODE_LISTポートレートモードにはなりません。ただし、埋め込みタブはなく、画面を横向きに回転させても機能しません。デフォルトでは、タブが埋め込まれているためNAVIGATION_MODE_LIST、幅が480dpを超える画面に表示されます。

この動作は(私が推測する)埋め込まれたタブがActionBarの幅に制限されているために発生します。したがって、ブール値をオーバーライドすると、別の行にタブがあり、折りたたまれません。しかし、残念ながら、これが風景で機能しない理由を自分で説明することはできません。

于 2012-12-11T21:32:10.587 に答える
3

申し訳ありませんが、これを止めることはできません。Googleによると、これはバグではなく機能です。参照:http ://code.google.com/p/android/issues/detail?id = 24439

于 2012-12-11T21:27:27.740 に答える
3

私が理解しているように、多くのタブがあり、それらを常にスクロール可能にしたい場合は、 ViewPager+PagerTitleStripの使用を検討する必要があります。ttps://code.google.com/p/android/issues/detail?id = 24439#c9からの引用は次のとおりです。

UIに多くのタブが含まれていて、スクロールタブまたは折りたたみからスピナーへのケースを定期的にヒットする場合は、完全なタブではなく、PagerTitleStripをインジケーターとして使用して、この情報を整理して表示することを検討してください。これは、表示されるタブのセットがユーザーの制御下にある場合に特に役立ちます。クリック可能なタブは、YouTubeアプリのように、小さな境界のあるセットがある場合に最適に機能します。タブストリップをスクロールすると、どのタブにもワンタッチでアクセスできなくなります。これは、単純なタイトルストリップに比べて主な利点です。PagerTitleStripスタイルの例は、AndroidマーケットとGoogle+アプリにあります。

トリックが安定して機能することを誰も保証しないので、トリックを使用することはお勧めしません。

于 2013-09-26T11:13:58.397 に答える
0

本当にタブを使用してスピナーに折りたたまれないようにしたい場合は、タブにcustomViewを設定している場合は、リフレクションを使用して技術的に可能です。

View v = <your custom tab view>;
Tab tab = actionBar.newTab().setCustomView(v);
    do{
       v = (View)v.getParent();                 
    } while (v!=null && !v.getClass().getSimpleName().equalsIgnoreCase("ScrollingTabContainerView"));

if(v!=null) {
    try {
        Method allowCollapse = v.getClass().getDeclaredMethod("setAllowCollapse", new Class[] { Boolean.TYPE });
        allowCollapse.setAccessible(true);
        allowCollapse.invoke(v, new Object[]{ false });                         
    } catch (Exception e) {
    }
}

十分なスペースがない場合、タブはアクションバーでスクロールします。タブとメニューactionItemには画面幅の1/2が指定されているため、タブがスクロールするかどうかを計算して、タブ、メニューactionItemラベルなどを調整したり、タブを強制的にスタックモードにして、タブのスクロールを回避したりできます。 ...または、前に提案したように、代わりにPagerTitleStripを使用します。

于 2014-06-12T04:30:00.133 に答える