0

私は、sherlockActionbar ライブラリと一緒に Holoeverywhere 互換性ライブラリを使用しています。私が抱えている問題は、DialogFragment クラスでビューを膨らませると、3.0 より前のデバイスでは正しく表示されないことです。

 public static class PointSystemDialogFragment extends DialogFragment implements View.OnClickListener, DialogInterface.OnClickListener {
    static final private int GET_CODE = 0;

    static PointSystemDialogFragment newInstance() {
        return new PointSystemDialogFragment();
    }

    Context app;
    Cursor pointSystem;
    DatabaseManager db;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        setStyle(STYLE_NORMAL, 0); //Used for theme switching in samples
        super.onCreate(savedInstanceState);
        app = getSupportActivity();
        db = DatabaseManager.getInstance();
    }

    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which) {
            case Dialog.BUTTON_POSITIVE:
                break;
            case Dialog.BUTTON_NEGATIVE:
                break;
            case Dialog.BUTTON_NEUTRAL:
                Intent intent = new Intent(getSupportActivity(), AddPointSystem.class);
                startActivity(intent);
                break;
        }
    }

    @Override
    **public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.pointsystemlist2, container, false);
        String pName = PointSystemDao.Properties.Name.columnName;
        pointSystem = db.getPointSystemCursor();
        String pValue = PointSystemDao.Properties.PointValue.columnName;
        String[] from = {pName, pValue};
        int[] to = {android.R.id.text1, android.R.id.text2};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(app, android.R.layout.simple_list_item_activated_1, pointSystem, from, to);
        ListView listView = (ListView) view.findViewById(R.id.pointsystem);
        listView.setTextFilterEnabled(true);
        listView.setAdapter(adapter);
        db.getPointSystemCursor().requery();
        // Tell the list view to show one checked/activated item at a time.
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        listView.setItemChecked(0, true);
        mListener = (onPointSystemChanged)app;
        listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(android.widget.AdapterView<?> parent, View view, int position, long id) {
                Long i = (long) position + 1;
                PointSystem pointSystem1 = db.getPointSystemDao().load(i);
                mListener.onSelectedPointSystem(pointSystem1.getName());
                //mListener.onPointSystemChanged(i);
                mListener.onChangedPointSystem(pointSystem1);
            }
        });
        Button Ok = (Button) view.findViewById(R.id.btnOk);
        Ok.setOnClickListener(this);
        Ok.requestFocus();
        Button Add = (Button) view.findViewById(R.id.btnAdd);
        Add.setOnClickListener(this);
        Button Cancel = (Button) view.findViewById(R.id.btnCancel);
        Cancel.setOnClickListener(this);
        Dialog dialog = getDialog();
        if (dialog != null) {
            dialog.setTitle("Select Point System");
            dialog.setCanceledOnTouchOutside(false);
        }
        return view;
    }**

    @Override
    public void onClick(View v) {
        int viewId = v.getId();
        switch (viewId) {
            case R.id.btnOk:
                break;
            case R.id.btnAdd:
                Intent intent = new Intent(getSupportActivity(), AddPointSystem.class);
                startActivity(intent);
                break;
            case R.id.btnCancel:
                break;
        }
        dismiss();
    }


}

3.0 より前のデバイスでディスプレイがどのように見えるかについてのリンクは、 http://i49.tinypic.com/2j9yeh.pngの下にあります。

3.0 以降のデバイスでは、正しく表示されます http://i46.tinypic.com/egy8tt.png

間違った表示の原因がわかりません。レイアウトファイルを以下に示します

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/pointsystem"
        android:layout_weight="1"/>

    <LinearLayout style="?android:attr/buttonBarStyle"
              android:layout_width="match_parent" android:layout_height="wrap_content"
              android:measureWithLargestChild="true">
        <Button style="?android:attr/buttonBarButtonStyle" android:id="@+id/btnCancel"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Cancel" />

        <Button style="?android:attr/buttonBarButtonStyle" android:id="@+id/btnAdd"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Add" />
        <Button style="?android:attr/buttonBarButtonStyle" android:id="@+id/btnOk"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="OK" />

    </LinearLayout>


</LinearLayout>

どんな助けでも本当に感謝しています。

4

3 に答える 3

0

問題が見つかりました。ラインの変更

SimpleCursorAdapter adapter = new SimpleCursorAdapter(app, android.R.layout.simple_list_item_activated_1, pointSystem, from, to);

SimpleCursorAdapter adapter = new SimpleCursorAdapter(app, org.holoeverywhere.R.layout.simple_list_item_activated_1, pointSystem, from, to);

また

int layout  =  int layout = (Build.VERSION.SDK_INT  >= 11) ? org.holoeverywhere.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;
SimpleCursorAdapter adapter = new SimpleCursorAdapter(app, layout, pointSystem, from, to);

https://github.com/ChristopheVersieux/HoloEverywhere/issues/225から解決策を得ました

于 2013-02-23T10:41:31.010 に答える
0

アラートダイアログ。

AlertDialog の代わりに Dialog を使用し、?buttonBarStyle の代わりに ?android:attr/buttonBarStyle を使用しています。?buttonBarButtonStyle の代わりに ?android:attr/buttonBarButtonStyle を使用しています。AlertDialog を使用するだけです。下のボタン バーを含むリストに必要なすべてのスタイルが既に含まれています。デモを参照してください。

于 2013-02-22T08:40:29.350 に答える
0

リストビューの重みとして "android: layout_weight = 1 "/>" を設定します。リストビューへの親ビューへの「weightSum」の値は何ですか? 問題はここにあるかもしれません。

于 2013-02-21T23:58:18.813 に答える