2016-07-04 12 views
0

私はAndroidスタジオには新しく、学習の練習として、マニフェスト以外のxmlファイルを使用せずにアプリケーションを作成しようとしています。 Java内でアクティビティ、レイアウト、ツールバー、および引き出しのメニューを完全に作成したいと考えています。物事が正常に行われているかどうかは分かりませんが、私は自分自身に多くの不必要なストレスを与える可能性がありますが、私が言ったように、これは学習の練習です。 すべてが実行されているようですが、ツールバーは表示されません。また、getSupportActionBar()。getHeight()はゼロを返します。レイアウトなしのAndroidスタジオツールバー

ご協力いただきましてありがとうございます。

おかげで、 ジョン

は、ここに私のActivity.java

package com.example.john.myblankapplication; 

import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.support.design.widget.Snackbar; 

import android.view.Gravity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

/** 
* Created by John on 7/3/2016. 
*/ 

public class MyActivity extends AppCompatActivity { 
    private RelativeLayout myRelativeLayout; 
    private LinearLayout myLinearLayout; 
    private Toolbar myToolbar; 
    private TextView myTextView; 
    private ActionBar myActionBar; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Create the main layout programmatically 
     createRelativeLayout(); 
     createLinearLayout(); 

     // I have tried it with LinearLayout and RelativeLayout 
     setContentView(myLinearLayout); 

     // Create the toolbar layout programmatically 
     createToolbarLayout(); 

     //myLinearLayout.addView(myToolbar); // that turned the whole screen red 

     setSupportActionBar(myToolbar); 
     myActionBar = getSupportActionBar(); 
     myActionBar.setDisplayHomeAsUpEnabled(true); // new test - didn't help 

     // Create the text programmatically 
     myLinearLayout.addView(createTextView()); 

     Snackbar.make(myTextView, "ActionBarHeight="+myActionBar.getHeight(), 
       Snackbar.LENGTH_LONG) 
       .setAction("Action", null).show(); // displays 0 
    } 

    private void createRelativeLayout() { 
     myRelativeLayout = new RelativeLayout(this); 

     // Specifies the layout properties 
     RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.MATCH_PARENT, 
       RelativeLayout.LayoutParams.MATCH_PARENT 
     ); 
     myRelativeLayout.setLayoutParams(relativeParams); 
    } 

    private void createLinearLayout() { 
     myLinearLayout = new LinearLayout(this); 

     // Specifies the layout properties 
     LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, 
       LinearLayout.LayoutParams.MATCH_PARENT 
     ); 
     myLinearLayout.setLayoutParams(linearParams); 
    } 

    private Toolbar createToolbarLayout() { 
     myToolbar = new Toolbar(this); 
     Toolbar.LayoutParams toolBarParams = new Toolbar.LayoutParams(
       RelativeLayout.LayoutParams.MATCH_PARENT, 
       R.attr.actionBarSize, Gravity.TOP 
     ); 
     myToolbar.setTitle("My Toolbar"); 
     myToolbar.setLayoutParams(toolBarParams); 
     myToolbar.setBackgroundColor(Color.RED); 
     myToolbar.setVisibility(View.VISIBLE); 
     return myToolbar; 
    } 

    private TextView createTextView() { 
     myTextView = new TextView(this); 

     // Set initial layout parameters 
     RelativeLayout.LayoutParams textViewParams = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.WRAP_CONTENT, 
       RelativeLayout.LayoutParams.WRAP_CONTENT 
     ); 

     // Set alignment parameters 
     //textViewParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
     textViewParams.addRule(RelativeLayout.CENTER_HORIZONTAL); 

     myTextView.setText("Here is some text"); 

     myTextView.setLayoutParams(textViewParams); 

     return myTextView; 
    } 

} 
+0

さて、まず、「LayoutParams」タイプの「View」はその親の「View」に依存するはずです。たとえば、「ツールバー」に「LinearLayout.LayoutParams」が設定されている必要があります。次に、 'R.attr.actionBarSize'は実際の高さの値ではありません。 [this post](http://stackoverflow.com/questions/12301510/how-to-get-the-actionbar-height)をご覧ください。 –

+0

素晴らしいです。ありがとう。 –

答えて

0

私はツールバーにカスタムビューを作成し、ちょうどレイアウト画面での寸法を設定推薦です。ツールバーパッケージをインポートする場合、カスタムビューをツールバーとして宣言できます。次に、組み込みのすべてのツールバーコマンドを使用して、タイトルとアイテムを追加することができます。

希望すると便利です。

0

また、線形レイアウトにツールバーを追加する必要があります。

関連する問題