2016-05-05 4 views
0

Activity私はTextViewを持っていて、それにActivityにナビゲーションドロワーを追加したかったのです。そこで私はXMLを変更し、DrawerLayoutを実装しました。それは単純に(それが開かないという意味)が機能していないとFrameLayoutDrawerLayoutTextViewテキストに関連していないDrawerLayoutブロック内に実装DrawerLayoutを実装した後DrawerLayoutが機能しておらず、関連するウィジェットをブロックしていません

drawer.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.dl.master.lyrics.lyricsmaster.LyricsActivity" 
    android:id="@+id/drawer_layout_id" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <!-- The main content view where fragments are loaded --> 
     <FrameLayout 
      android:id="@+id/frame_layout_id" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 

     <TextView 
      android:id="@+id/text_tv_id" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      /> 

    </LinearLayout> 


    <!-- The navigation drawer --> 
    <TextView 
     android:layout_width="220dp" 
     android:layout_height="match_parent" 
     android:text="Try me! NOW" 
     /> 

</android.support.v4.widget.DrawerLayout> 

<!-- 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/text_tv_id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     /> 

</RelativeLayout> 
--> 
LinearLayout

内部TextViewは見ることができない関係のないDrawerLayoutウィジェットです。他のTextViewは、ナビゲーションドロワーTextViewです。私はナビゲーションドロワーウィジェットがandroid:layout_gravity="start"のプロパティを持っていなければならないことを知っていますが、それは明らかに私がそれを書くことができないようにレイアウトの親を持っていません。

Activityを実行すると、ナビゲーションドロワーTextViewのテキスト「今すぐ試す」が表示されます。

DrawerActivity.java

パブリッククラスLyricsActivityがAppCompatActivity { 民間のTextViewのテキストを拡張します。

private DrawerLayout drawerLayout; 
private ActionBarDrawerToggle actionBarDrawerToggle; 

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

    this.initializeViews(); 

    this.actionBarDrawerToggle = new ActionBarDrawerToggle(LyricsActivity.this,this.drawerLayout, 
      null,R.string.open_drawer_description,R.string.close_drawer_description); 
    this.drawerLayout.addDrawerListener(actionBarDrawerToggle); 
    //this.drawerLayout.openDrawer(GravityCompat.START); // java.lang.IllegalArgumentException: No drawer view found with gravity LEFT 
} 

@Override 
protected void onResume() 
{ 
    super.onResume(); 

    this.text.setText(getIntent().getStringExtra("Tags")); 
} 

/** 
* Initialize all my views. 
* 
*/ 
public void initializeViews() 
{ 
    this.lyrics = (TextView) findViewById(R.id.text_tv_id); 
    this.drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout_id); 
} 

私はすべてのドキュメントを読んでいましたが、何も役に立たず、この種の問題に対処できませんでした。

答えて

1

DrawerLayoutは、どれもViewが、layout_gravity属性によってドロワーとして使用するかどうかを決定します。この属性を適切な値でTextViewに追加するだけです。例:

<!-- The navigation drawer --> 
<TextView 
    android:layout_width="220dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="left|start" 
    android:text="Try me! NOW" 
/> 
+0

私は書きました。 'XML'ファイルは、何らかの形で' TextView'を 'DrawerLayout'の子ビューとして認識できません。しかし、答えに感謝します。他のアイデア? – God

+0

どういう意味ですか?エラーが発生していますか?残りのレイアウトはOKです。 –

+0

それはちょうど私が 'android:layout_g'と書くようになったというメッセージが表示されません。他のすべてのプロパティはプロンプトを表示します。 – God

関連する問題