-2

こんにちは私はアルファベットがすべてのデバイスに適合しないアプリを開発しています。HCL MEタブレットの場合、私のデザインは適合しません。サムスンの場合、それは機能しています。私の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:layout_weight="2" android:orientation="vertical">

    <LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_weight="1">

        <LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent"  
        android:orientation="vertical" android:layout_width="match_parent" 
        android:layout_weight="1">
            <TextView  android:id="@+id/letter1" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"></TextView>
            <TextView  android:id="@+id/letter2" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dip"></TextView>
            <TextView  android:id="@+id/letter3" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dip"></TextView>
        </LinearLayout>

        <LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent"  
        android:gravity="center"
        android:orientation="horizontal" android:layout_width="match_parent" 
        android:layout_weight="1">
            <ImageView android:id="@+id/imag"  
            android:gravity="center"
            android:scaleType = "fitCenter"
            android:layout_height="fill_parent" 
            android:layout_width="fill_parent"
             android:layout_gravity="center">
        </ImageView>

        </LinearLayout>

    </LinearLayout>


        <LinearLayout android:layout_gravity="bottom" 
        android:id="@+id/linearLayout2" 
        android:layout_height="wrap_content" android:orientation="horizontal" android:layout_width="match_parent">
            <Button android:id="@+id/previous" android:layout_width="wrap_content" android:layout_weight="1" android:text="Previous" android:layout_height="wrap_content" ></Button>
            <Button android:id="@+id/practice" android:layout_width="wrap_content" android:layout_weight="1" android:text="Practice" android:layout_height="wrap_content" android:onClick="onClick"></Button>
            <Button android:id="@+id/home" android:layout_width="wrap_content" android:layout_weight="1" android:text="Home" android:layout_height="wrap_content"></Button>
            <Button android:id="@+id/spell" android:layout_width="wrap_content" android:layout_weight="1" android:text="Spell" android:layout_height="wrap_content" android:onClick="Content"></Button>
            <Button android:id="@+id/next" android:layout_width="wrap_content" android:layout_weight="1" android:text="Next" android:layout_height="wrap_content" android:onClick="Content"></Button>


        </LinearLayout>

</LinearLayout>

私のJavaファイルは次のとおりです。

package com.android;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.android.SimpleGestureFilter.SimpleGestureListener;

public class MyAcivity extends Activity implements SimpleGestureListener {

    private SimpleGestureFilter detector;
    private static int counter=-1;
    private String[] mBtn1 ={"C","D","E","F","G","H","IÄ","J","K","L","M","N","O","CA","CB"};
    private TextView txtLetter;
    private ImageView imgLetter;

    private int[] imgArr={R.drawable.w1,R.drawable.w2,R.drawable.w3,R.drawable.w4,R.drawable.w5,R.drawable.w6,R.drawable.w7,R.drawable.w8,R.drawable.w9,R.drawable.w10,R.drawable.w11,R.drawable.w12,
            R.drawable.w13,R.drawable.w14,R.drawable.w15};
    private TextView txtKannada;
    private String[] mBtn2 = {"CgÀ¸À","DªÉÄ","E°","F±À","GqÀ","Hl","IĶ","J¯É","Kr","LzÀÄ","M¯É","N¯É","OµÀzsÀ",
            "CAUÀr","CB"};
    private String[] mBtn3 = {"ARASA","AME","ILI","ISA","UDA","UTA","RUSHI","ELE","EDI","AIDU","oLE","OLE","AUSHADA",
            "ANGADI","AHA"};
    private TextView txtEnglish;

    private int[] mAudio = {R.raw.a,R.raw.b,R.raw.c,R.raw.d,R.raw.e,R.raw.f,R.raw.g,R.raw.h,R.raw.i,R.raw.j,
            R.raw.k,R.raw.l,R.raw.m,R.raw.n,R.raw.o};
    protected MediaPlayer mp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content);   

        detector = new SimpleGestureFilter(this,this);
        if(counter == -1)
            counter =getIntent().getExtras().getInt("POSITION");
        Typeface tf = Typeface.createFromAsset(getBaseContext().getAssets(), "fonts/brhknd.ttf");
        txtLetter = (TextView)findViewById(R.id.letter1);
        txtKannada = (TextView)findViewById(R.id.letter2);
        txtEnglish = (TextView)findViewById(R.id.letter3);
        imgLetter = (ImageView)findViewById(R.id.imag);
        txtLetter.setTypeface(tf);      
        txtLetter.setText(mBtn1[counter]);
        txtLetter.setTextSize(350);

        txtKannada.setTypeface(tf);
        txtKannada.setText(mBtn2[counter]);
        txtKannada.setTextSize(100);

        txtEnglish.setText(mBtn3[counter]);
        txtEnglish.setTextSize(50);

        Button btnNext =  (Button)findViewById(R.id.next);
        btnNext.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(counter<imgArr.length-1)
                    counter++;
                changeContent();
            }
        });

        Button mPlay = (Button)findViewById(R.id.spell);
        mPlay.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mp = MediaPlayer.create(MySwara.this, mAudio[counter]);   
                mp.start();
            }
        });

        Button btnPrvs =  (Button)findViewById(R.id.previous);
        btnPrvs.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(counter>0)
                    counter--;
                changeContent();
            }
        });

        Button btnPractice = (Button)findViewById(R.id.practice);
        btnPractice.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MySwara.this,DrawingActivity.class);
                startActivity(intent);
            }
        });

        Button btnHome = (Button)findViewById(R.id.home);
        btnHome.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MySwara.this,mainClass.class);
                startActivity(intent);
            }
        });
    }

    public void changeContent()
    {
        txtLetter.setText(mBtn1[counter]);
        txtKannada.setText(mBtn2[counter]);
        txtEnglish.setText(mBtn3[counter]);
        //imgLetter.setBackgroundResource(imgArr[counter]);
        Bitmap bm = BitmapFactory.decodeResource(getResources(), imgArr[counter]);
        imgLetter.setImageBitmap(bm);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent me){
        this.detector.onTouchEvent(me);
        return super.dispatchTouchEvent(me);
    }
    @Override
    public void onSwipe(int direction) {
        String str = "";
        switch (direction) {
            case SimpleGestureFilter.SWIPE_RIGHT : str = "Swipe Right";
                if(counter>0)
                    counter--;
                    changeContent();
                break;
            case SimpleGestureFilter.SWIPE_LEFT :  str = "Swipe Left";
                if(counter<imgArr.length-1)
                    counter++;
                    changeContent();
                break;
        }
    }
}

どのように私はすべてのデバイスにフィットすることができますか。誰か助けてもらえますか?前もって感謝します。

4

2 に答える 2

0

デバイスごとに個別にxmlを作成します。これに従ってください


2番目の方法:

親 LinearLayout を作成し、次のメソッドに渡します

public static boolean isTabletPC(Context context) {
    Display display = ((WindowManager) context
            .getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    if (display.getWidth() >= 1200) {
        isTabletPC = true;
        return isTabletPC;
    } else {
        isTabletPC = false;
        return isTabletPC;
    }
}

public static void fixUiDeviceDependencies(
        Activity act, LinearLayout llParent) {
    if (Utilities.isTabletPC(act)) {
        Display display = ((WindowManager) act
                .getSystemService(Context.WINDOW_SERVICE))
                .getDefaultDisplay();
        LayoutParams params = (LayoutParams) llParent
                .getLayoutParams();
        params.width = display.getWidth() / 2;
        llParent.setLayoutParams(params);
    }

}
于 2012-04-16T08:07:42.267 に答える
0

いくつかの可能性があります:

  1. 画面のサイズごとに異なるxmlファイルを使用します->ここをチェックしてくださいhttp://developer.android.com/guide/practices/screens_support.html

  2. あなたが使用することができますscrollview- > http://developer.android.com/reference/android/widget/ScrollView.html

  3. または、レイアウトをサポートしたい最小の画面サイズに合わせて、大きな画面に「少し」未使用のスペースを確保するだけです。

それは本当にあなたが必要とするものに依存します. おそらく、最も互換性があり高度なソリューションは 1 です。

ただし、画面レイアウトのすべての変更は、このルートに従って xml ファイルごとに複製する必要があることに注意してください。

于 2012-04-16T08:08:36.777 に答える