2014-08-29 72 views
0

我有一個應用,在那裏我這裏使用的教程:http://developer.android.com/training/implementing-navigation/nav-drawer.html如何在使用Android項目模板時更改導航文字樣式?

我現在的工作,我選擇的抽屜式導航活動模板創建一個新項目:

enter image description here

不幸的是這個模板作品相當與教程不同,我正在努力進行更改以獲得它所需的方式。

資產淨值抽屜佈局是這樣的:

<ListView 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:background="#cccc" 
android:choiceMode="singleChoice" 
android:divider="@android:color/transparent" 
android:dividerHeight="0dp" 
tools:context="com.example.appname.NavigationDrawerFragment" /> 

在本教程中,你可以設置drawer_list_item在mDrawerList適配器在MainActivity:

mPlanetTitles = getResources().getStringArray(R.array.planets_array); 
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
mDrawerList = (ListView) findViewById(R.id.left_drawer); 

// Set the adapter for the list view 
mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mPlanetTitles)); 
// Set the list's click listener 
mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

在模板事情都做不同的:

mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
mTitle = getTitle(); 

// Set up the drawer. 
mNavigationDrawerFragment.setUp(R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); 

我試着手動創建一個對導航dra的引用佈局和設置一個適配器,但發生的一切都是我的標題變爲空白。

有沒有人成功地做到了這一點?該死的谷歌製作一個完全不同於他們的教程的模板!

+0

希望它可以幫助

資產淨值抽屜的建立,現在在導航抽屜片段類完成:) – 2014-08-29 13:11:14

回答

0

好吧,我找到了答案,我顯然昨天看起來不正常。

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    ///yada yada yada 

    mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar() 
      .getThemedContext(), android.R.layout.simple_list_item_1, 
      android.R.id.text1, new String[] { 
        getString(R.string.title_section1), 
        getString(R.string.title_section2), 
        getString(R.string.title_section3),})); 
    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); 
    return mDrawerListView; 
} 

所以我根本就改變一個ArrayAdapter我的佈局資源:

mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar() 
      .getThemedContext(), R.layout.drawer_list_item, 
      android.R.id.text1, new String[] { 
0

我有同樣的問題,這裏是在github一個簡單的例子: 增加抽屜式導航適配器排圖標,名稱,數量

https://github.com/ManolescuSebastian/Android-Mail-App/tree/master/app/src/main/java/ro/softwareinclude/android_mail_app/adapter

,你需要的有用的代碼:

的NavigationDrawerFragment:

//Pop navigation drawer item list 
List<InstantMailNavigationItem> navigationDrawerMapElementsList = new ArrayList<InstantMailNavigationItem>(); 
String [] navigationItemNameArray= getResources().getStringArray(R.array.instantNavigationItemName); 
TypedArray images = getResources().obtainTypedArray(R.array.instantNavigationItemIcon); 
for(int i=0;i<5;i++){ 
    InstantMailNavigationItem instantMailNavigationItems = new InstantMailNavigationItem(); 
    instantMailNavigationItems.setItemName(navigationItemNameArray[i]); 
    instantMailNavigationItems.setItemImageResource(getResources().getDrawable(images.getResourceId(i,-1))); 
    navigationDrawerMapElementsList.add(instantMailNavigationItems); 
    } 
    NavigatorAdapter navigatorAdapter = new NavigatorAdapter(getActionBar().getThemedContext(), navigationDrawerMapElementsList); 
    mDrawerListView.setAdapter(navigatorAdapter); 

適配器類:

public class NavigatorAdapter extends ArrayAdapter { 

private Context context; 
private ViewHolder holder; 
private List<InstantMailNavigationItem> navigationDrawerElements; 
public NavigatorAdapter(Context context, List<InstantMailNavigationItem> instantMailNavigationItems) { 
super(context, R.layout.navigator_adapter,instantMailNavigationItems); 
this.context = context; 
this.navigationDrawerElements = instantMailNavigationItems; 
} 

/** 
* getView method is called for each item of ListView 
*/ 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    InstantMailNavigationItem navigationItem = navigationDrawerElements.get(position); 
    LayoutInflater inflater = (LayoutInflater)   context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    convertView = inflater.inflate(R.layout.navigator_adapter, null); 
    holder = new ViewHolder(); 
    init(convertView,holder); 
    holder.navDrawerItemName.setText(navigationItem.getItemName()); 
    holder.navDrawerItemIcon.setImageDrawable(navigationItem.getItemImageResource()); 
    return convertView; 
    } 

    public void init(View convertView, ViewHolder holder) { 
    holder.navDrawerItemIcon = (ImageView) convertView.findViewById(R.id.navDrawerItemIcon); 
    holder.navDrawerItemName = (TextView)  convertView.findViewById(R.id.navDrawerItemName); 
    holder.navDrawerItemNumber = (TextView) convertView.findViewById(R.id.navDrawerItemNumber); 
    } 

    static class ViewHolder{ 
     ImageView navDrawerItemIcon; 
     TextView navDrawerItemName; 
     TextView navDrawerItemNumber; 
    } 
    } 
+0

我很欣賞這一努力,但我無法真正瞭解如何在不必重新編寫大量代碼的情況下應用該功能。回到教程中的代碼會更容易。 – Leon 2014-08-30 12:13:27

相關問題