テキストを表示するシンプルなアプリがあります。
アプリは、いくつかのオプションを備えたメイン画面から始まります(例:アプリに関する情報を表示する情報ボタン、ユーザーが表示可能な個々のテキストをすべて表示できる参照ボタン)。メインボタンは、テキストが表示される別の画面につながります。左右にスワイプすることで、彼はテキストの異なる通路を見ることができます。これがアプリの主な目的です。
現在、ActionBarを実装しています。私のMainActivity.JavaはAppCompatActivityを拡張します。アプリ内のすべてがこのアクティビティに含まれています。
ここで、起動画面や「情報」/「閲覧」モードではなく、「表示」モードでのみアクションバーが表示されるようにします。
アプリの一部にActionBarを配置し、アプリの別の部分にnoActionBarを配置することはできますか? (そして、すべてを同じアクティビティに入れますか?)
私はこれを無駄に達成しようとしてきました。これが可能な場合、次に何を試してみる必要がありますか?
これまでのところ、私は次のことを試みました:
1)このテーマを作成する
<style name="Theme.AppCompat.NoActionBar" parent="Theme.AppCompat.Light">
<item name="Android:windowActionBar">false</item>
<item name="Android:windowNoTitle">true</item>
</style>
そして、MainActivityに適用します...
<activity
Android:name=".MainActivity"
Android:label="@string/app_name"
Android:theme="@style/Theme.AppCompat.NoActionBar" >
....これを実行した後、ActionBarはまだそこにありました。 (これは、このS.O.投稿に由来します( Android:windowNoTitleはappcompat-v7 21.0.0でアクションバーを非表示にしません )
2)別の試みは、これをonCreateに追加することでした。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
setContentView(R.layout.activity_main);
これは、このS.Oを研究したことによるものです。 post:( アクティビティが作成される前にアクションバーを非表示にして、再び表示する方法 )
助言がありますか?
アクティビティではnoアクションバーでTheme.AppCompat.NoActionBar
またはTheme.AppCompat.Light.NoActionBar
から派生したテーマを使用します。このアクティビティは、setSupportActionBar(Toolbar)
を介して独自のものを提供しない限り、アクションバーを表示することはできません。
アクティビティでアクションバーを表示する場所Theme.AppCompat
、Theme.AppCompat.Light
、またはTheme.AppCompat.Light.DarkActionBar
から派生したテーマを使用します。これにより、そのようなアクティビティのアクションバーを動的に非表示または表示できます。これらのテーマを使用して独自のアクションバーを提供することはできません。
appcompat-v7アクションバーの操作の場合、getSupportActionBar()
の代わりにgetActionBar()
を呼び出して取得する必要があります。
ActionBarをプログラムで非表示および表示できます。
隠れる
getSupportActionBar().hide();
表示する
getSupportActionBar().show();
フラグメントから
隠れる
getActivity().getSupportActionBar().hide();
表示する
getActivity().getSupportActionBar().show();
編集:
@ RenniePet で述べたように、
Toolbar
としてActionBar
を使用している場合は、((AppCompatActivity)getActivity()).getSupportActionBar()
を呼び出す必要があります。
アクティビティをAppCompatActivity
として拡張し、アクションバーを次のように使用します–
getSupportActionBar().hide(); // for hiding
getSupportActionBar().show(); // for showing
<style name="Theme.AppCompat.NoActionBar" parent="Theme.AppCompat.Light">
<item name="Android:windowActionBar">false</item>
<item name="Android:windowNoTitle">true</item>
</style>
次のように、アイテムwindowActionbar。のAndroidを削除します。
<style name="Theme.AppCompat.NoActionBar" parent="Theme.AppCompat.Light">
<item name="windowActionBar">false</item>
<item name="Android:windowNoTitle">true</item>
</style>
それがあなたのお役に立てば幸いです。
AppCompatActivityには独自の埋め込みツールバーがあります。メインxmlで追加のツールバー定義を使用する必要はありません。
getSupportActionBar()。show()を呼び出すだけです
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().show();
}
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
TextView text1=(TextView)findViewById(R.id.textView);
text1.setText("I changed the text!");
}
return super.onOptionsItemSelected(item);
}
OnCreateメソッドで、setContentViewの後、これを使用して、各クラスの表示または非表示を単純にします。
getSupportActionBar().hide();
getSupportActionBar().show();
タイトルを設定する場合は、
getSupportActionBar().setTitle("This is ToolBar");
AppTheme
ですべてのアクティビティのツールバーを閉じます:
styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- .NoActionBar -->
AppCompatActivityを使用してINTENTのActionBarを表示/非表示にしようとすると、次の問題が発生します。
以下の手順に従って、インテントへの同じ関連スレッドにアクセスします。
// 1) Calling the intent in the "main activity"
Intent intent = new Intent(context, YourClass.class);
startActivity(intent);
// 2) Get the context in your "Intent activity"
public class YourClass extends AppCompatActivity {
YourClass mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
mContext = this;
}
// 3) Hide/Show Action bar from a method
public void yourMethod(YourClass mContext){
mContext.runOnUiThread(new Runnable() {
@Override
public void run() {
mContext.getSupportActionBar().hide();
}
});
}
これが解決策になることを願っています。それは私のシステムで機能しました:
Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"