1

スピナーのドロップダウン ボックス内の項目をプログラムで変更するPaddingにはどうすればよいですか?TextSize

XML を使用してみましたが、画面サイズによってパディングとテキスト サイズが異なって表示されます。画面の寸法に基づいていくつかの簡単な計算を実行する必要があります。ビューを拡張しようとしましたが、ビューを XML に変換したり、アダプタに適用したりする方法が見つかりませんでした。

スピナーのコードは次のとおりです。

View view = getLayoutInflater().inflate(R.layout.list_items, null);
view.setPadding((int) (screenWidth * 0.1), (int) (screenHeight * 0.2), (int) (screenWidth * 0.1), (int) (screenHeight * 0.2));
if (portrait)
    spnVerbs.setAdapter(new MySpinnerAdapter(R.layout.list_items, CHOICES));
else
    spnVerbs.setAdapter(new MySpinnerAdapter(R.layout.list_items1, CHOICES));

そして MySpinnerAdapter.class

class MySpinnerAdapter extends ArrayAdapter<String>
{
    MySpinnerAdapter(int dropDownResource, String[] choices)
    {
        super(Start.this, dropDownResource, choices);
    }

    public View getView(int position, View convertView, ViewGroup parent)
    {
        View row = convertView;
        if (row == null)
            row = super.getView(position, convertView, parent);
        if (parent.getWidth() > 0)
        {
            TextView label = (TextView) row.findViewById(android.R.id.text1);
            label.setIncludeFontPadding(false);
            label.setTextSize(TypedValue.COMPLEX_UNIT_PX, SetTextSize(label.getText().toString(), parent.getWidth() - paddingLeft * 2 - paddingLeftExtra * 2, (int) fieldHeight - paddingTop * 2 - paddingTopExtra * 2));
            label.setPadding(paddingLeft + paddingLeftExtra, 0, 0, 0);
        }
        return(row);
    }
}
4

2 に答える 2