0

作業中のアプリ内のアクセシビリティ バーの一部である 2 つのテキスト ビューに追加した onClickListeners に問題があります。アプリがタブレット上にある場合、リスナーは期待どおりに動作し、テキスト サイズを適切に増減しますが、携帯電話上で実行すると、どのビューがタッチされてもサイズ リスナーのみが呼び出されます。

誰かが私を正しい方向に向けることができれば、私は最も感謝しています。以下は、2 つのリスナーを追加するコードです。

            accLayout = new LinearLayout(this);
    accLayout.setOrientation(LinearLayout.HORIZONTAL);

    TextView bigger = new TextView(this);
    bigger.setBackgroundResource(R.drawable.bigger);
    bigger.setLayoutParams(new LayoutParams(screenWidth/5, utils.dpToPx(60)));
    bigger.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
             htmlLayout.increaseTextSize();

        }
    });

    TextView smaller = new TextView(this);
    smaller.setBackgroundResource(R.drawable.smaller);
    smaller.setLayoutParams(new LayoutParams(screenWidth/5, utils.dpToPx(60)));
    smaller.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
              htmlLayout.decreaseTextSize();
        }
    });

    TextView invert = new TextView(this);
    invert.setBackgroundResource(R.drawable.invert);
    invert.setLayoutParams(new LayoutParams(screenWidth/5, utils.dpToPx(60)));
    invert.setHeight(utils.dpToPx(60));
    invert.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (!HtmlLayout.INVERTED){

                 htmlLayout.invertColours();
                 HtmlLayout.INVERTED = true;
            } else {

                 htmlLayout.unInvertColours();
                 HtmlLayout.INVERTED = false;
            }

        }
    });     
    LinearLayout sliderContainer = new LinearLayout(this);
    sliderContainer.setBackgroundResource(R.drawable.slider);
    sliderContainer.setLayoutParams(new LayoutParams((screenWidth/5)*2, utils.dpToPx(60)));
    sliderContainer.setGravity(Gravity.CENTER_VERTICAL);

    SeekBar brightness = new SeekBar(this);
    brightness.setLayoutParams(new LayoutParams((int) (screenWidth * 0.4), utils.dpToPx(30)));
    brightness.setMax(100);
    brightness.setBackgroundColor(Color.TRANSPARENT);
    brightness.setProgress((int) (0.7 * 100));
    brightness.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            WindowManager.LayoutParams lp = getWindow().getAttributes();
            lp.screenBrightness = (float)(progress + 20) / 100.0f;
            getWindow().setAttributes(lp);

        }

        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
            // TODO Auto-generated method stub

        }
    });
    sliderContainer.addView(brightness);

    accLayout.setGravity(Gravity.CENTER_VERTICAL);

    accLayout.addView(bigger);
    accLayout.addView(smaller);
    accLayout.addView(invert);
    accLayout.addView(sliderContainer);
    mainContainer.addView(accLayout,2);
4

1 に答える 1

0

コード自体は正しいようです。ビューが同じ色であると仮定して、各ビューの背景を変更してみて、画面にどのように表示されているかを正確に確認できます。

私はそれをテストするために手元にある IDE を持っていませんが、意図したとおりにレイアウトされていない可能性があると思います。

于 2013-08-12T11:03:26.797 に答える