編集:私はプログラムでImageView
を入れることができるように、ビューの高さ/幅を取得しようとしています。しかしgetHeight()
とgetWidth()
は0を返すので、私はImageView
を正しい位置に置くことができませんでした。私はImageView
をRelativeView
(main_activity
)に表示させました。Android RelativeLayout.getHeightは0を返します。研究は終了しましたが、一般的な解決策は私にエラーを与えています
私は0
エラーを返すgetHeight()
関連答えを知ってる:How to retrieve the dimensions of a view?
は、残念ながらそれは私がNULLポインタ参照でメソッドを呼び出すためにしようとしていると言って、ld.setLayerInset()
との行に私の例外を与えています。私はそのような例外の意味を理解していますが、変数名の修正を加えたコードに上記リンクのコードをコピーして貼り付けようとしていたので、私のコードに何が問題なのか分かりません。ここに私のコードの一部を以下のとおりです。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.activity_main).getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
LayerDrawable ld = (LayerDrawable) findViewById(R.id.activity_main).getBackground();
ld.setLayerInset(1,0,0,0,0);
if (Build.VERSION.SDK_INT >= 16) {
findViewById(R.id.activity_main).getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
findViewById(R.id.activity_main).getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
});
...
}
私はこの問題は、getBackground()
は、例外をスローするように次の行を引き起こすnull
を得る上で発生したと思うが、私はすべての問題だか分かりません。
おそらく、どんな 'findViewById(R.id.activity_main)'を返すには背景がありません。 – CommonsWare
RelativeLayoutの背景がありませんか?現在のところ、まだ背景はありませんが、それが本当に問題であれば、それは非常に奇妙です。また、そのリンクの回答提供者はOPを知っていたのでしょうか、それとも他の人が自分の意見についてのバックグラウンドを持っていなければなりませんか? –
"それが本当に問題ならば、それは非常に奇妙なことでしょう。" - なぜ?バックグラウンドを持たないものに対して 'getBackground()'が 'null'を返すと思います。 – CommonsWare