下記のサンプルではTextViewの位置が、Spinnerの縦中央になるようにしている。これを行わない場合、TextViewの位置は、画面の上部にくっついたものとなり、TextViewとRadioButtonの間が空きすぎてしまい、不自然に見える。
FrameLayoutのメンバーViewであるLinearLayoutにandroid:layout_gravity="center_vertical"を加える。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <FrameLayout
        android:layout_width="fill_parent"
        android:Layout_height="wrap_content"
        >
        <Spinner
            android:id="@+id/Spinner"
            android:layout_width="fill_parent"
            android:Layout_height="wrap_content"
            >
        </Spinner>
        <LinearLayout
            android:id="@+id/LinearLayout"
            android:layout_width="fill_parent"
            android:Layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            >
            <TextView
                android:id="@+id/TextView"
                android:text="@string/noData"
                android:layout_width="fill_parent"
                android:Layout_height="wrap_content"
                >
            </TextView>
        </LinearLayout>
    </FrameLayout>
    <RadioGroup
        android:id="@+id/RadioGroup"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
        <RadioButton
            android:id="@+id/Button0"
            android:text="@string/Button0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </RadioButton>
        <RadioButton
            android:id="@+id/Button1"
            android:text="@string/Button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </RadioButton>
        <RadioButton
            android:id="@+id/Button2"
            android:text="@string/Button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </RadioButton>
    </RadioGroup>
</LinearLayout>
public class FrameLayoutTestActivity extends Activity
    implements
    OnCheckedChangeListener
    {
    RadioGroup rg;
    Spinner sp;
    LinearLayout ll;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ArrayAdapter<CharSequence> adapter;
        ll = (LinearLayout)findViewById(R.id.LinearLayout);
        sp = (Spinner)findViewById(R.id.Spinner);
        rg = (RadioGroup)findViewById(R.id.RadioGroup);
        rg.setOnCheckedChangeListener(this);
        rg.check(R.id.Button0);
        sp.setVisibility(View.INVISIBLE);
        ll.setVisibility(View.VISIBLE);
        adapter = ArrayAdapter.createFromResource(
            this, R.array.Array,
            android.R.layout.simple_spinner_item
        );
        adapter.setDropDownViewResource(
            android.R.layout.simple_spinner_dropdown_item
        );
        sp.setAdapter(adapter);
    }
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId){
        if(group==rg){
            TextView tv;
            tv = (TextView)findViewById(R.id.TextView);
            switch(checkedId){
            case R.id.Button0:
                ll.setVisibility(View.VISIBLE);
                sp.setVisibility(View.INVISIBLE);
                tv.setText(R.string.noData);
                break;
            case R.id.Button1:
                ll.setVisibility(View.VISIBLE);
                sp.setVisibility(View.INVISIBLE);
                tv.setText(R.string.OneItem);
                break;
            case R.id.Button2:
                sp.setVisibility(View.VISIBLE);
                ll.setVisibility(View.INVISIBLE);
                break;
            }
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <string-array name="Array">
        <item>dog</item>
        <item>cat</item>
        <item>mouse</item>
        <item>worm</item>
    </string-array>
</resources>
0 件のコメント:
コメントを投稿