2017-03-25 13 views
0

私はstackoverflowで見つかったいくつかの答えを読んだことがありますが、見つかったものはうまくいきませんでした。xmlから寸法を読み取る

私は以下の寸法を持っています(肖像ボタンの高さは幅1+ 2、幅3 + 4)。

私はちょうど私がonConfigurationChanged上書きボタンサイズが縦私のコードで

<dimen name="button_height_portrait">180dp</dimen> 
<dimen name="button_width_portrait">180dp</dimen> 
<dimen name="button_height_landscape">60dp</dimen> 
<dimen name="button_width_landscape">60dp</dimen> 

よりも風景の中に小さくなりたい:

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 

     if (mScreenOrientation == Configuration.ORIENTATION_PORTRAIT) { 
      if (mButton != null) { 
       Integer ButtonWidthPortrait = getResources().getDimensionPixelSize(R.dimen.button_width_portrait); 
       Integer ButtonHeightPortrait = getResources().getDimensionPixelSize(R.dimen.button_height_portrait); 
       mButton.setWidth(ButtonWidthPortrait); 
       mButton.setHeight(ButtonHeightPortrait); 
      } 
     } 
     else if (mScreenOrientation == Configuration.ORIENTATION_LANDSCAPE) { 
      if (mButton!= null) { 
       Integer ButtonWidthLandscape = getResources().getDimensionPixelSize(R.dimen.button_width_landscape); 
       Integer ButtonHeightLandscape = getResources().getDimensionPixelSize(R.dimen.button_height_landscape); 
       mButton.setWidth(ButtonWidthLandscape); 
       mButton.setHeight(ButtonHeightLandscape); 
      } 
     } 
    } 

結果はボタンが同じに見えることです正確にサイズ。

int dimenHeightPortrait = (int) (getResources().getDimension(R.dimen.start_button_height_portrait)/getResources().getDisplayMetrics().density) 

など..しかし、同じ結果: は、私はまた、次元を取得しようとしました。私は基本メソッドでmScreenOrientationを更新

はonConfigurationChanged:

<resources> 
    <dimen name="activity_horizontal_margin">16dp</dimen> 
    <dimen name="activity_vertical_margin">16dp</dimen> 
    <dimen name="nav_header_vertical_spacing">16dp</dimen> 
    <dimen name="nav_header_height">160dp</dimen> 
    <dimen name="fab_margin">16dp</dimen> 
    <dimen name="star_text_size">26sp</dimen> 
    <dimen name="toast_save_text_size">34sp</dimen> 
    <dimen name="toast_image_height">50dp</dimen> 
    <dimen name="toast_image_width">50dp</dimen> 
    <dimen name="space_between_touch_views">10dp</dimen> 
    <dimen name="button_moretext_size">20sp</dimen> 
    <dimen name="button_get_text_size">20sp</dimen> 
    <dimen name="key_corner_radius">3dp</dimen> 
    <dimen name="key_top_inset">3dp</dimen> 
    <dimen name="key_bottom_inset">3dp</dimen> 
    <dimen name="key_right_inset">2.5dp</dimen> 
    <dimen name="key_left_inset">2.5dp</dimen> 
    <dimen name="title_text_size">11sp</dimen> 


    <dimen name="button_height_portrait">180dp</dimen> 
    <dimen name="button_width_portrait">180dp</dimen> 
    <dimen name="button_height_landscape">60dp</dimen> 
    <dimen name="button_width_landscape">60dp</dimen> 
</resources> 
+1

申し訳ありませんが、私は基本的にそれを更新します。この情報で質問を編集します。 if(getResources()。getConfiguration()。orientation == Configuration.ORIENTATION_PORTRAIT){ mScreenOrientation = Configuration.ORIENTATION_PORTRAIT; } else if(getResources()。getConfiguration()。orientation == Configuration.ORIENTATION_LANDSCAPE){ mScreenOrientation = Configuration.ORIENTATION_LANDSCAPE; } –

+0

これを回答してみませんか? – peter

+0

それは答えではないからです。私はすでに質問を投稿する前にmScreenOrientationを更新しました。私はmScreenOrientationを更新したことをここに書きませんでした。 –

答えて

0

は成功しました:

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 
    mScreenOrientation = Configuration.ORIENTATION_PORTRAIT; 
} 
else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
    mScreenOrientation = Configuration.ORIENTATION_LANDSCAPE; 
} 

ここに私の完全なdimensファイルです!

なぜsetWidthとsetHeightがうまくいかなかったのか分かりませんが、これは問題ありません。肖像画):

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.width = ButtonWidthLandscape; 
params.height = ButtonHeightLandscape; 
mButton.setLayoutParams(params); 
関連する問題