2

iOS では、UIView が親ビューによって与えられた制約に基づいてサイズを変更できるという概念があります。たとえば、親ビューが拡大すると、子ビューは使用可能なスペースに合わせて拡大または縮小する場合があります。これはプラットフォームに組み込まれており、開発が簡単になります。

だから、私の問題は、ICS で ActionBar を利用するスマートフォン アプリケーションを開発していることです。私はそこに私が使用して設定したカスタムビューを持っています:

actionBar.setCustomView(R.layout.my_custom_title);

xml からビューを膨らませているだけであることに注意してください。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<TextView
    android:id="@+id/title"
    style="@style/TextAppearance.Title.Theme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:text="Title" />
<TextView
    android:id="@+id/subtitle"
    style="@style/TextAppearance.SubTitle.Theme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:text="Subtitle" />
</LinearLayout>

現在、ICS では、向きが変わると ActionBar の高さが変わります。縦モードよりも横モードの方が狭いです。これにより、カスタム タイトル ビュー テキストのサイズが変更されていないのに、ActionBar の高さが縮小されたため、横向きモードで「サブタイトル」テキストが途切れてしまいます。

プログラムを使用せずに、向きの変更時にテキストのサイズを変更することは可能ですか?

私はオーバーリングです

onConfigurationChanged()

そのため、横向きと縦向きのカスタム タイトル ビューを別々に持つことはできません。

補足: これは私に思い出させます... onConfigurationChanged() で、基本的に画面上のビューの位置を調整するだけの新しい xml レイアウトを提供できることを望みます。もちろん、縦長レイアウトと xml レイアウトには同じビューが含まれている必要がありますが、異なるレイアウト情報が存在することになります。これにより、 onCreate() を再度呼び出すよりもはるかに簡単になり、より効率的になります。

4

1 に答える 1

2

TextViewのサイズは変更されましたが、テキストサイズは変更されていません。余分な労力なしにテキストサイズを変更する方法はありませんが、さまざまなオプションがあります。

  1. ポートレートモードとランドスケープモードに異なるテキストサイズ値を定義し、onConfigurationChangedをオーバーライドしないでください。これは、2つのdimensions.xmlを作成することで実行できます。1つはres/values-land内にあり、もう1つはres/values-port内にあります
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="font_size">16dp</dimen>
</resources>

そして、レイアウトでその値をTextViewに割り当てます

<TextView 
    android:textSize="@dimen/font_size"
  1. 2番目のオプションは、プログラムでフォントサイズを計算することです。これはすでに別の質問でカバーされていました
于 2012-05-08T17:39:24.107 に答える