2016-06-18 11 views
1

Android Studio 2.1.1を使用して、提供されたテンプレートが最良の(または少なくとも十分な)練習であることを前提に、作成時にツールバーが表示されない方法と理由単純なアプリケーションを最初から、そしてツールバーをListViewに表示させる方法について説明します。ターゲットAPIには15以上が含まれます。Android StudioテンプレートでListViewにツールバーを表示する

私が使用したプロセスは、最小SDK API15を新規作成し、ギャラリーで「基本アクティビティ」を選択すると、activity_main.xmlとcontent_main.xmlが作成されました。どちらも変更はありません。基本アクティビティには、フローティングアクションボタン(新しいアクティビティを開始する簡単な方法)が含まれています。私はListActivityを拡張する "MyListActivity.java"を作成し、フローティングアクションバーをクリックすると "MainActivity.java"から呼び出されます。

public class MyListActivity extends ListActivity { 

    private ArrayAdapter<String> mAdapter; 
    private ListView myListView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     myListView = getListView(); 
     String[] osArray = { "Android", "iOS", "Windows", "OS X", "Linux","Android", "iOS", "Windows", "OS X", "Linux","Android", "iOS", "Windows", "OS X", "Linux","Android", "iOS", "Windows", "OS X", "Linux" }; 

     int x = android.R.layout.list_content; 
     mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray); 
     myListView.setAdapter(mAdapter); 
    } 
} 

リストが表示されたら、ツールバーは表示されません。

list without toolbar

私はツールバーが含まれたスタイルとレイアウトを使用しようとする試みを行っているが、このうちのいくつかは「カバーの下」であることから、私が行うには正しい方法を見つけることに成功していませんでしたそれ。

答えて

0

あなたはsetcontentview

Toolbar toolbar =(Toolbar)findViewById(R.id.toolbar); 

setSupportActionBar(toolbar); 

とあなたのxml内の後に2文を追加する必要がありブロはあなたのリストビューの前にアプリケーションバーのレイアウトが含ま

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

</android.support.design.widget.AppBarLayout> 

:)助けて幸せ:)

+0

これはどのように機能しますか?投稿したレイアウトはどこに置くのですか?私は "android.R.layout.simple_list_item_1"の在庫を使用しているので、変更するXMLファイルレイアウトはありません。私はすでにコピーを作成しようとしましたが、リスト内のすべての項目にツールバーが表示されます。 AppCompactActivityを拡張すると、setSupportActionBarを使用できますが、ListActivityを拡張しています。 – Dale

+0

ちょっと@Dale私の質問で私を助けることができる、あなたはAndroidでプロになるようです。 – user3542307

+0

http://stackoverflow.com/questions/37901197/collapse-toolbar-with-a-button-but-the-button-should-move-as-the-collapsible-tex – user3542307

0

私は"appcompatlistactivity"を検索することに決めました。これはGoogleマシンが提供した "AppCompat ListActivity"で、this linkでした。

これは、ListActivityを拡張するクラスにAppCompatCallbackを実装することです。それは、onCreate()メソッドでAppCompatDelegateを作成し、スーパーバージョンを呼び出すだけでなく、デリゲートバージョンを呼び出すなど、さまざまなメソッドをオーバーライドします。

public class MyListActivity extends ListActivity implements AppCompatCallback { 
    private AppCompatDelegate mAppCompatDelegate; 
    private ArrayAdapter<String> mAdapter; 
    private ListView myListView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     mAppCompatDelegate = AppCompatDelegate.create(this, this); 
     mAppCompatDelegate.installViewFactory(); 
     mAppCompatDelegate.onCreate(savedInstanceState); 
     super.onCreate(savedInstanceState); 
     myListView = getListView(); 
     String[] osArray = { "Android", "iOS", "Windows", "OS X", "Linux","Android", "iOS", "Windows", "OS X", "Linux","Android", "iOS", "Windows", "OS X", "Linux","Android", "iOS", "Windows", "OS X", "Linux" }; 

     int x = android.R.layout.list_content; 
     mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray); 
     myListView.setAdapter(mAdapter); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     mAppCompatDelegate.onPostCreate(savedInstanceState); 
    } 

    public ActionBar getSupportActionBar() { 
     return mAppCompatDelegate.getSupportActionBar(); 
    } 

    public void setSupportActionBar(@Nullable Toolbar toolbar) { 
     mAppCompatDelegate.setSupportActionBar(toolbar); 
    } 

    @Override 
    public MenuInflater getMenuInflater() { 
     return mAppCompatDelegate.getMenuInflater(); 
    } 

    @Override 
    public void setContentView(@LayoutRes int layoutResID) { 
     mAppCompatDelegate.setContentView(layoutResID); 
    } 

    @Override 
    public void setContentView(View view) { 
     mAppCompatDelegate.setContentView(view); 
    } 

    @Override 
    public void setContentView(View view, ViewGroup.LayoutParams params) { 
     mAppCompatDelegate.setContentView(view, params); 
    } 

    @Override 
    public void addContentView(View view, ViewGroup.LayoutParams params) { 
     mAppCompatDelegate.addContentView(view, params); 
    } 

    @Override 
    protected void onPostResume() { 
     super.onPostResume(); 
     mAppCompatDelegate.onPostResume(); 
    } 

    @Override 
    protected void onTitleChanged(CharSequence title, int color) { 
     super.onTitleChanged(title, color); 
     mAppCompatDelegate.setTitle(title); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     mAppCompatDelegate.onConfigurationChanged(newConfig); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     mAppCompatDelegate.onStop(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     mAppCompatDelegate.onDestroy(); 
    } 

    public void invalidateOptionsMenu() { 
     mAppCompatDelegate.invalidateOptionsMenu(); 
    } 

    @Override 
    public void onSupportActionModeFinished(ActionMode mode) { 

    } 

    @Override 
    public void onSupportActionModeStarted(ActionMode mode) { 

    } 

    @Override 
    public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) { 

     return null; 
    } 
} 

これは機能します。それが最適かどうか、あるいは「正しい方法」とは分かりませんが、私はそれを取るでしょう。

list with tool bar

関連する問題