0

9 パッチ バブルを使用しているチャット アプリケーションを開発しています。

画面上にバブルを表示する機能

 static void showMessage(String message, boolean leftSide) 
    {
        Log.d("abc","show");
        final TextView textView = new TextView(activity);
        textView.setTextColor(Color.BLACK);
        textView.setText(message);

        int bgRes = R.drawable.left_message_bg;

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);



        if (!leftSide) 
        {
            bgRes = R.drawable.right_message_bg;
            params.gravity = Gravity.RIGHT;


        }

        textView.setLayoutParams(params);

        textView.setBackgroundResource(bgRes);

         messagesContainer.addView(textView);

                // Scroll to bottom
         if (scrollContainer.getChildAt(0) != null) 
                  {

                    scrollContainer.scrollTo(scrollContainer.getScrollX(), scrollContainer.getChildAt(0).getHeight());

               }

                scrollContainer.fullScroll(View.FOCUS_DOWN);

            }

XML レイアウト

<?xml version="1.0" encoding="utf-8"?>


<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/messageEdit"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:autoText="true"
        android:hint="message text"
        android:layout_alignParentRight="false"
        android:layout_toLeftOf="@+id/sendButton"
        android:layout_marginRight="10dp"/>
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send"
        android:id="@+id/sendButton"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"/>

<ScrollView
        android:id="@+id/scrollContainer"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="false"
        android:layout_alignParentTop="false"
        android:layout_marginBottom="20dp" android:layout_above="@+id/messageEdit"
        android:layout_below="@+id/meLabel" android:layout_marginTop="10dp">
    <LinearLayout
            android:id="@+id/messagesContainer"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
    </LinearLayout>
</ScrollView>
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/headerforchat"
        android:text="Me"
        android:id="@+id/meLabel" android:layout_gravity="left|center_vertical" android:singleLine="false"
        android:textSize="20dp"/>
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/headerforchat"
        android:text="Friend"
        android:id="@+id/friendLabel" android:layout_alignParentRight="true" android:textSize="20dp"/>

</RelativeLayout>

しかし、Android 2.3でテストすると奇妙な動作をします.Samsung Glaxy S3で見栄えがします

Glaxy s3の結果

ここに画像の説明を入力

1枚目はGalaxy S3のスクリーンショット。2 番目の Android 2.3 のスクリーンショット。Android 2.3 で青いバブルが奇妙に表示される

left_message_bg-->The orange bubble which will display after sending message

right_message_bg-->The blue bubble which will display after receiving message

9枚のパッチ画像

ここに画像の説明を入力 ここに画像の説明を入力

どんな助けでも大歓迎です

4

1 に答える 1

1

私の推測では、9 パッチを 1 つのドローアブル フォルダー ( drawable-xhdpi) にのみ配置したと思われます。xhdpi ではないデバイスに配置すると、縮小され (外側の黒いピクセルの定義を含む)、9 パッチとして解釈できなくなるため、失敗します。スケーリングされた mdpi および hdpi バージョンを作成するか、drawable-nodpi.

于 2013-03-07T08:48:58.803 に答える