3

私はこれを理解しようとしているので、解決策を持っている誰かがそこにいることを願っています.

Android アプリのカスタム レイアウトを作成したいと考えています。これは理論的には十分に簡単なはずですが、その方法に関する有用な情報は見つかりません。

私が探しているもの: 1) カスタム レイアウトを作成するために ViewGroup をサブクラス化する方法に関する簡単なステップバイステップのチュートリアル。2) たとえば、子ビューにアクセスする方法、子ビューに自分自身を描画する方法とタイミング、カスタム レイアウトの xml を定義する方法、カスタム xml 属性にアクセスする方法などの内部メカニズムの基本的な理解。

私はインターネット全体を見てきましたが、小さなヒントしか見つけることができず、サブクラスの作成を開始することさえできませんでした。

1) http://parleys.com/#id=2191&sl=3&st=5で講演が行われましたが、購読を求める数分後に中断されました。2) http://developer.android.com/reference/android/view/ViewGroup.htmlの API リファレンスですが、サブクラスを現実的に実装する方法についての手がかりはありません。

4

1 に答える 1

1

私はこれを見つけました 。なんとも複雑です。

チュートリアル

Android のサポートでは、絶対的なレイアウトはなくなりました。setX メソッドが欲しいだけです。FrameLayout が最適なオプションです。も見てください: スタックオーバーフローの答え

FrameLayout を使用すると、 absolute と同様の位置と寸法を設定できます。さらに深く行きたい場合は、次の方法を使用する必要があります。

// x と y には onCreate を使用できます

// 幅と高さを設定するための最良の方法 - post を使用 // post メソッドは、UI の準備ができていることを意味します

  VEIW_MAIN = (ViewGroup) findViewById(R.id.activity_main);

   VEIW_MAIN.post(new Runnable() {
            @Override
            public void run() {

                LayoutParams paraBigText = BigText.getLayoutParams();
                Double d24 = 200.0;
                paraBigText.width = d24.intValue();
                BigText.setLayoutParams(paraBigText);
                BigText.setGravity( Gravity.CENTER_HORIZONTAL);

           }
       });

...

ViewTreeObserver vto = SOME_ELEMENT.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()       
{
    public boolean onPreDraw() {

         // changes here
        return true;
    }
}); 

...

修正が必要な場合は、これを使用してください:

 if (EKRAN.WIDTH() <= 480)
            {
                FIX_FOR_480_WIDTH();
            }
            else if (EKRAN.WIDTH() == 540) {
                FIX_FOR_540_WIDTH();
            }
            else if (EKRAN.WIDTH() == 720) {
                FIX_FOR_720_WIDTH();
            }
            else if (EKRAN.WIDTH() == 1080) {
                FIX_FOR_1080_WIDTH();
            }

...

 void FIX_FOR_540_WIDTH()
    {
        System.out.println("FIX FUNCTION FOR 540 low width !!!!!!!");
        SOMEELEMENT.setY( 0.865f * EKRAN.HEIGHT() );
    }

...

Copy SCREEN class from : パーセントで位置を設定 - Android DisplayMetrics

他の方法では、完全なカスタムオーダーが本当に必要な場合は、canvas2d を使用して独自の独自の UI を作成できます ...

于 2016-10-19T09:18:51.960 に答える