1

私は、「ウィジェット」(カスタム作成ビュー)を表示するためのグリッドを実装する必要があるプロジェクトに取り組んでいます。多かれ少なかれAndroidランチャーとそのウィジェットと同じ、ユーザーがグリッドを移動することができるウィジェット(ほとんどのランチャーのように長押しのウィジェット)ここで私が探しているもののプレビューです: Every color represents one different kind of "Widget"カスタムビューのセルサイズグリッドが異なる

私はGridLayoutとTableLayoutを試しましたが、レイアウトをウィジェットに合わせるために "マージ"できません。

グリッド自体は8×12セルのグリッドで、ウィジェットは1つ以上のセルを使用できます。たとえば、2×3(h | w)の「ウィジェットボタン」を設定しました。

私が必要とするものに合ったレイアウトがありますか、自分で作成する必要がありますか?

ありがとう、アベル!

+0

PercentRelativeLayoutを見ましたか? – ditkin

+0

これは有望そうです!私は何かを構成して、再びコメントしようとします! **編集:** JavaでPercentRelativeLayoutの子のパーセンテージを設定しようとしましたが、見た目の良い例があります([example](http://stackoverflow.com/questions/32497833/how-to-set-子どものビューのパーセンテージの高さ - 幅 - パーセンテージのout-of-r))、子ビューがXMLを使用して定義されている場合、パーセンテージはjavaでのみ解決できます。 Launcherウィジェットと同じように、オブジェクトを動的に作成し、配置する必要があります。 ありがとうございます! –

答えて

1

ように私はプログラムでビューを作成し、そのPercentRelativeLayout.LayoutParamsを設定するには、次のコードを使用したのと同じことをしています:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_percent_relative); 

    ViewGroup root = (ViewGroup)findViewById(R.id.perecent_layout_view); 

    View blueWidget = new View(this); 
    blueWidget.setBackground(blue); 
    root.addView(blueWidget); 

    setUpLayout(blueWidget, 2.0f/8.0f, 6.0f/8.0f, 6.0f/8.0f, 0.0f, 2.0f/8.0f, 0.0f); 

    View redWidget = new View(this); 
    redWidget.setBackground(red); 
    root.addView(redWidget); 

    setUpLayout(redWidget, 5.0f/8.0f, 2.0f/8.0f, 3.0f/8.0f, 0.0f, 0.0f, 6.0f/8.0f); 

} 

private void setUpLayout(View view, float widthPercent, 
         float heightPercent, 
         float leftMarginPercent, 
         float rightMarginPercent, 
         float topMarginPercent, 
         float bottomMarginPercent) { 

    PercentRelativeLayout.LayoutParams layoutParams = new PercentRelativeLayout.LayoutParams(view.getLayoutParams()); 
    PercentLayoutHelper.PercentLayoutInfo percentLayoutInfo = layoutParams.getPercentLayoutInfo(); 

    percentLayoutInfo.heightPercent = heightPercent; 
    percentLayoutInfo.widthPercent = widthPercent; 
    percentLayoutInfo.topMarginPercent= topMarginPercent; 
    percentLayoutInfo.bottomMarginPercent= bottomMarginPercent; 
    percentLayoutInfo.leftMarginPercent= leftMarginPercent; 
    percentLayoutInfo.rightMarginPercent= rightMarginPercent; 

    view.setLayoutParams(layoutParams); 

} 

ビューは次のようになります。 enter image description here

+0

私はこれを正解としてマークしています。なぜなら、私が尋ねたことは完全に正しいと思われますが、私は単純なGridLayoutと位置管理のための配列でそれを行う方法を見つけたと思います。それが最後に働くなら、私はここに投稿します。 ありがとうございました! –

+0

あなたがあなたのソリューションを投稿するときは、それを正しいものとしてマークしてください。プログラムでレイアウトを使用し、必要な動作を得ることができることを実証したかったのです。 – ditkin

1

あなたのアプリはリサイクラービューでstaggeredGridLayoutを使用できますか? http://developer.android.com/reference/android/support/v7/widget/StaggeredGridLayoutManager.html

は、すべての列のサイズは、しかし...ちょっと次enter image description here

この例から取ら

https://guides.codepath.com/android/using-the-recyclerview

+0

Mmm ...列サイズも可変である必要がありますので、最適な選択肢ではないと思います...これを見ていきますが、それは私には合わないようです。 とにかく、ありがとうあなたのサポート! –

関連する問題