Android Listview隐藏了Titlebar

时间:2015-09-30 02:17:53

标签: android listview android-listview

我试图制作应用程序 - 它有3个活动。前两个是线性布局的列表视图,每个都阻止标题栏显示。标题栏我指的是通常位于活动顶部的部分,它显示活动的名称以及选项设置。我的第三个活动不是列表视图,并且正常显示标题栏,这使我认为它可能是我的列表视图的问题。

我的第一页的xml是:

<LinearLayout 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"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".SelectClass">

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ListView>

我的java类对显示器没有太大作用,尽管它确实设置了一个数组适配器和一个onClick监听器。如果有必要了解发生了什么,请告诉我,我会发布它们。我感谢任何帮助或线索。谢谢!

编辑:第一页&#39; s java:

package com.example.graeme.dnd5echaracterroller;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.view.View;
import android.widget.TextView;


public class SelectClass extends ListActivity {

private static String classString;

public static void setClassString(String classString) {
    SelectClass.classString = classString;
}

public static String getClassString() {

    return classString;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_select_class);

    //Initialize the available class choices
    final String[] classes = {"Barbarian","Bard","Cleric","Druid",
    "Fighter","Monk","Paladin","Ranger","Rogue","Sorcerer",
    "Warlock", "Wizard"};
    ArrayAdapter<String> classAdapter = new ArrayAdapter<>(getListView().getContext(),
            R.layout.classlayout, R.id.classname, classes);

    getListView().setAdapter(classAdapter);

    //Set on click listener to get selected class item
    AdapterView.OnItemClickListener itemClickedHandler = new AdapterView.OnItemClickListener(){
        public void onItemClick(AdapterView<?> parent, View v, int position, long id){
            //Start a new intent headed to selectRoll, fill it with the class string selected
            Intent sendClassIntent = new Intent(SelectClass.this, SelectRoll.class);

            //Each list item has an image, and text
            //First grab the list item, then grab the text from it
            LinearLayout ll = (LinearLayout)v;
            TextView tv = (TextView)(ll).findViewById(R.id.classname);
            setClassString((String)(tv.getText()));

            startActivity(sendClassIntent);
        }
    };
    getListView().setOnItemClickListener(itemClickedHandler);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_select_class, menu);
    return true;
}

@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) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

2 个答案:

答案 0 :(得分:1)

您应该将第一个活动修改为此结构

public class SelectClass extends AppCompatActivity {
    ...
    private ListView mListView;
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_select_class);

        // Initialize the lisview
        mListView = (ListView) findViewById(R.id.lisview_id); // lisview id


        //Initialize the available class choices
        final String[] classes = {"Barbarian","Bard","Cleric","Druid",
        "Fighter","Monk","Paladin","Ranger","Rogue","Sorcerer",
        "Warlock", "Wizard"};
        ArrayAdapter<String> classAdapter = new ArrayAdapter<>  (this,
                R.layout.classlayout, R.id.classname, classes); // update

        mListView.setAdapter(classAdapter);

       ...

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       ....
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        .....
    }
    }

在第一个活动的ListView中

<ListView
android:id="@+id/lisview_id"  // use this id for initialize listview
android:layout_width="match_parent"
android:layout_height="match_parent">

希望这个帮助

答案 1 :(得分:0)

我认为问题不在于ListView,因为你在清单中设置的样式通常会隐藏它。这就是manifest.xml中的主要活动:

<activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

listView活动中的android:theme="@style/AppTheme"必须设置为显示“标题栏”的Apptheme。

希望这有帮助

相关问题