アイスクリームサンドイッチ(Android 4.0)には、Action Bar
電話の画面の下部にあります。これは私のアプリケーションで使用したいものです。 docs 言及uiOptions="splitActionBarWhenNarrow"
何かが必要なとき、つまりタブを上部に、Action Bar
下部のショートカット。ドキュメントに記載されているように、アプリケーションマニフェストに行を追加しようとしましたが、今のところ機能していません。
以下に例を示します。
また、ICSを実行しているGalaxy Nexusで、メッセージングアプリケーションにAction Bar
下部と上部のタイトル以外は何もないので、何らかの方法でAction Bar
が一番下になります。
何か案は?
ドキュメントに記載されているように、アプリケーションマニフェストに行を追加しようとしましたが、今のところ機能していません。
このサンプルプロジェクト で機能しました。マニフェストは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.commonsware.Android.actionbarbc"
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<application Android:hardwareAccelerated="true"
Android:icon="@drawable/cw"
Android:label="@string/app_name">
<activity Android:label="@string/app_name"
Android:name=".InflationDemo"
Android:uiOptions="splitActionBarWhenNarrow">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk Android:minSdkVersion="4"
Android:targetSdkVersion="11" />
<supports-screens Android:anyDensity="true"
Android:largeScreens="true"
Android:normalScreens="true"
Android:smallScreens="true"
Android:xlargeScreens="true" />
</manifest>
また、ICSを実行するGalaxy Nexusでは、メッセージングアプリケーションの下部にアクションバーがあり、上部にタイトルしかありません。そのため、アクションバーを強制的に下部に配置できる必要があります。
会話リストを参照している場合は、ActionBar
と次のセットアップコードを使用して、上部と下部にあるsplitActionBarWhenNarrow
です。
private void setupActionBar() {
ActionBar actionBar = getActionBar();
ViewGroup v = (ViewGroup)LayoutInflater.from(this)
.inflate(R.layout.conversation_list_actionbar, null);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(v,
new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.RIGHT));
mUnreadConvCount = (TextView)v.findViewById(R.id.unread_conv_count);
}
ActionBarSherlockを使用していますが、同様の問題がありました。 Android:uiOptions="splitActionBarWhenNarrow"
以内 <activity>
タグではなく、<application>
タグ。
たとえば、これはうまくいきました:
<activity Android:name=".my.Activity"
Android:uiOptions="splitActionBarWhenNarrow"/>
これは機能しませんでした:
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.slowchop.etc"
Android:uiOptions="splitActionBarWhenNarrow">
ここで編集するのは画像です:)。
再び最高の結果で:)。最初に行う必要があるのは、header.xmlというレイアウト名を作成することです
_<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="@dimen/action_bar_height"
Android:layout_gravity="top"
Android:baselineAligned="true"
Android:orientation="horizontal" >
<ImageView
Android:id="@+id/share"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="start"
Android:layout_weight=".14"
Android:background="@drawable/action_bar_left_button"
Android:src="@drawable/action_bar_glyph_back" />
<ImageView
Android:id="@+id/bright"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight=".14"
Android:background="@drawable/action_bar_left_button"
Android:src="@drawable/action_bar_glyph_Lux" />
<ImageView
Android:id="@+id/rotate"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight=".14"
Android:background="@drawable/action_bar_left_button"
Android:src="@drawable/rotate" />
<ImageView
Android:id="@+id/bright"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight=".14"
Android:background="@drawable/action_bar_left_button"
Android:src="@drawable/action_bar_glyph_Lux" />
<ImageView
Android:id="@+id/rotate"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight=".14"
Android:background="@drawable/action_bar_left_button"
Android:src="@drawable/rotate" />
<ImageView
Android:id="@+id/forwa"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight=".14"
Android:background="@drawable/action_bar_left_button"
Android:src="@drawable/forward" />
</LinearLayout>
_
その後、MainActivity.classに移動してこのメソッドを作成します。
_ private void setupActionBar() {
ActionBar actionBar = getActionBar();
//actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
ViewGroup v = (ViewGroup)LayoutInflater.from(this)
.inflate(R.layout.header, null);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(v,
new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.RIGHT));
}
_
onCreateアクティビティにsetupActionBar();
を追加して、アプリを実行します:)。
仕切りと画像P.Sを含むカスタムActionBarができました。仕切りはレイアウトで画像の背景として定義されています:)。
タブレットで一番下に留まることを強制することはできませんが、電話があれば、マニフェストを通してそれを行うことができます。ただし、下のバーと上のバーに似たことができます。この例では、Android ActionBar。を使用する必要なしに簡単にマージを行う方法を示します。
最初に作成する必要があるのは、main_activity.xml
です。私の場合、main_activity.xml
にはRelativeLayoutのImageView
のみが含まれます。ここにコードがあります。
<RelativeLayout 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=".MainActivity" >
<RelativeLayout Android:id="@+id/RelativeLayout04"
Android:layout_width="match_parent" Android:layout_height="wrap_content"
Android:layout_alignParentTop="true">
<include layout="@layout/header" />
</RelativeLayout>
<ImageView
Android:id="@+id/view"
Android:layout_width="match_parent"
Android:layout_height="200dp"
Android:layout_above="@+id/RelativeLayout03"
Android:layout_below="@+id/RelativeLayout04"
Android:layout_centerHorizontal="true"
Android:src="@Android:drawable/alert_dark_frame" />
<RelativeLayout Android:id="@+id/RelativeLayout03"
Android:layout_width="match_parent" Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true">
<include layout="@layout/tryit" />
</RelativeLayout>
上記のコードを見るとわかるように、main_activity.xml
の中に2つのマージがあり、1つは下で定義され、もう1つは上で定義されています。これが偽のボトムバーxmlです。
<merge xmlns:Android="http://schemas.Android.com/apk/res/Android">
<LinearLayout
Android:id="@+id/LinearLayout01"
Android:layout_width="match_parent"
Android:layout_height="80dp"
Android:layout_weight="0.14"
Android:background="@drawable/dock" >
<ImageView
Android:id="@+id/dark"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.14" />
<ImageView
Android:id="@+id/stock"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.14" />
<ImageView
Android:id="@+id/open"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.14" />
<ImageView
Android:id="@+id/border"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.15" />
<ImageView
Android:id="@+id/color"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.15"
/>
</LinearLayout>
LinearLayout
に固定の背景を配置し、onClicksのImageViewを偽造しています。
ここがトップバーです。 `
<LinearLayout
Android:id="@+id/LinearLayout02"
Android:layout_width="match_parent"
Android:layout_height="40dp"
Android:layout_weight="0.14"
Android:background="@drawable/dock1"
Android:layout_gravity="top">
<ImageView
Android:id="@+id/darka"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.14" />
<ImageView
Android:id="@+id/stocka"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.14" />
<ImageView
Android:id="@+id/opena"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.14" />
<ImageView
Android:id="@+id/bordera"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.15" />
<ImageView
Android:id="@+id/colora"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_weight="0.15"
/>
</LinearLayout>
`
また、上の下部のバーからペーストをコピーします。 Android:layout_alignParentBottom="true"
からAndroid:layout_alignParentTop="true"
に変更するだけで、下部と上部にactionBarが表示されます。この場合、ActionBarを使用する必要はないので、Theme.Holo.NoActionBar
を使用することをお勧めします。
そして、これが画像の結果です: http://i.imgur.com/N8uKg6v.png
これは私が現在取り組んでいるプロジェクトです。ほぼすべてを行いましたが、それでも設計に苦労しています。私の答えがあなたに利益をもたらすことを願っています。面白いと思ったら答えを投票してください。
宜しくお願いします。 〜コシュ
これを試して...
private View contentView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
contentView = getLayoutInflater().inflate(R.layout.activity_main, null);
setContentView(contentView);
LinearLayout layout = (LinearLayout) contentView.getParent().getParent();
View view = layout.getChildAt(0);
layout.removeViewAt(0);
layout.addView(view);
}