2012-03-08 6 views
1

EditTextとFrameLayout(Listのフレームと同様)を含むTopのRelativeLayoutを持ち、それ自体ListViewを含みます。 EditTextの背景をクリックすると、キーボードがアクティブで、EditTextsが空である限り、他の透明な領域と同様、FrameLayoutも薄い青色になります。これらのEditTextを塗りつぶすと、EditTextsの画面の一部の定義不可能な部分が、想定される色を戻します。キーボードが表示されているときにEditTextがすでに入力されている場合、エフェクトは表示されません。キーボードが表示されているときにレイアウトの背景が「ハイライト」(青色)になる

私はこのバグで調査するのに数時間を費やしてヒントを探していますが、これをどのように絞り込むべきかをまだ分かりません。私はあなたにもっと多くの情報を与えることができればいいと思っていますが、私は何が関係しているのか分かりません。

レイアウト

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#F2F2E5"> 

    <RelativeLayout 
     android:id="@+id/extendedActionBar" 
     android:layout_width="fill_parent" 
     android:layout_height="60dp" 
     android:background="#d8d8d8" > 

     <TextView 
      android:id="@+id/verbundenMit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="5dp" 
      android:text="Verbunden mit:" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

     <TextView 
      android:id="@+id/DeviceName" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="165dp" 
      android:text="Device" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

     <TextView 
      android:id="@+id/fehlerbezeichnung" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="540dp" 
      android:text="Fehlerbezeichnung" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:visibility="gone" /> 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" 
      android:src="@drawable/rand_actionbar" /> 

     <ImageView 
      android:id="@+id/imageView3" 
      android:layout_width="60dp" 
      android:layout_height="60dp" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="740dp" 
      android:background="#ff0000" 
      android:src="@android:drawable/ic_dialog_alert" 
      android:visibility="gone" /> 
    </RelativeLayout> 

    <Button 
     android:id="@+id/Parametersatzvergleich" 
     android:layout_width="180dp" 
     android:layout_height="80dp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="80dp" 
     android:text="Vergleich:  Online/Offline" /> 

    <Button 
     android:id="@+id/NeuParameter" 
     android:layout_width="180dp" 
     android:layout_height="80dp" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginRight="60dp" 
     android:layout_marginTop="80dp" 
     android:text="Neuer Parametersatz" /> 

    <TextView 
     android:id="@+id/filter_bez" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="180dp" 
     android:text="Auswahlkriterien" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <FrameLayout 
     android:id="@+id/offlineframeLayout1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/filter_bez" 
     android:layout_marginBottom="25dp" 
     android:layout_marginLeft="25dp" 
     android:layout_marginRight="25dp" 
     android:layout_marginTop="80dp" 
     android:background="#d8d8d8" > 

     <ListView 
      android:id="@+id/offline_parameter_list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="5dp" 
      android:background="#FFFCCC" 
      android:fadeScrollbars="false" 
      android:fastScrollEnabled="true" > 
     </ListView> 
    </FrameLayout> 

    <TextView 
     android:id="@+id/filterParameternummer_bez" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/filter_bez" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="20dp" 
     android:text="Parameternr:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/filterParameternummer" 
     android:layout_width="80dp" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/filterParameternummer_bez" 
     android:layout_alignBottom="@+id/filterParameternummer_bez" 
     android:layout_marginLeft="140dp" 
     android:inputType="number" android:hint="..."> 
    </EditText> 

    <Button 
     android:id="@+id/search" 
     android:layout_width="180dp" 
     android:layout_height="80dp" 
     android:layout_marginLeft="60dp" 
     android:layout_marginTop="80dp" 
     android:onClick="search" 
     android:text="Auswahl anwenden" /> 

    <TextView 
     android:id="@+id/filterInfotext_bez" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Infotext:" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_marginTop="20dp" 
     android:layout_below="@+id/filter_bez" 
     android:layout_marginLeft="250dp"/> 

    <EditText 
     android:id="@+id/filterInfotext" 
     android:layout_width="320dp" 
     android:layout_height="wrap_content" 
     android:inputType="text" 
     android:layout_alignBaseline="@+id/filterInfotext_bez" 
     android:layout_alignBottom="@+id/filterInfotext_bez" 
     android:layout_marginLeft="320dp" 
     android:hint="..." android:focusable="true" 
     android:focusableInTouchMode="true"/> 

</RelativeLayout> 

活動

public final class OfflineParameterActivity extends AbstractBindingActivity implements OnClickListener { 

    private ArrayAdapter<ParameterSet> listAdapter; 
    public static final String EXTRA_DB_SOLLWERTE = "SollWerte"; 
    private static final String TAG = MainActivity.class.getSimpleName(); 
    private static final int REQUEST_PARAMETER_DETAILS = 100; 
    private static final int REQUEST_BLUETOOTH_ENABLE = 100; 
    private static final int REQUEST_BLUETOOTH_DEVICES = 101; 
    private Button parameterSatzVergleich; 
    private Button neuerParameter; 
    private EditText filterparameternummer; 
    private EditText filterinfotext; 
    private int paramnummer; 
    private String infotext; 
    protected ListAdapter adapter; 
    DBHelper dbHelper; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.offlineparameter); 

     this.dbHelper = DBHandler.getDBHelper(); 

     // Eabar: Ereignisse ausblenden per default 
     findViewById(R.id.verbundenMit).setVisibility(View.GONE); 
     findViewById(R.id.DeviceName).setVisibility(View.GONE); 

     // Buttons 
     parameterSatzVergleich = (Button) findViewById(R.id.Parametersatzvergleich); 
     parameterSatzVergleich.setOnClickListener(this); 
     parameterSatzVergleich.setTextColor(-16777216); 
     if (getCommunicationService() == null){ 
     parameterSatzVergleich.setTextColor(-3355444);//LTGRAY 
     } 
     neuerParameter = (Button) findViewById(R.id.NeuParameter); 
     neuerParameter.setOnClickListener(this); 

     filterparameternummer = (EditText) findViewById(R.id.filterParameternummer); 
     filterinfotext = (EditText) findViewById(R.id.filterInfotext); 

     Intent intent = new Intent(); 
     intent.putExtra(EXTRA_DB_SOLLWERTE, true); 


     this.listAdapter = new ArrayAdapter<ParameterSet>(this, android.R.layout.simple_list_item_2, android.R.id.text1) { 
      @Override 
      public View getView(int position, View convertView, ViewGroup parent) {// Methode überschreiben 
       ParameterSet item = getItem(position); 

       View view = super.getView(position, convertView, parent);// Ergebnis der originalmethode holen 

       TextView textView1 = (TextView) view.findViewById(android.R.id.text1); // manipulieren 
       textView1.setText(getResources().getString(R.string.parameter_set_number, item.getParameterIndex() + 1)); 

       TextView textView2 = (TextView) view.findViewById(android.R.id.text2); 
       if (!item.isEmpty()) {// Version mit "leer" bezeichnen 
        String temp = (getResources().getString(R.string.parameter_set_version, item.getVersion())); 
        String temp2 = (getResources().getString(R.string.parameter_set_infotext, item.getInfoText())); 
        textView2.setText(temp + "  " + temp2); 
       } 
       else { 
        textView2.setText(R.string.parameter_set_empty); 
       } 

       return view;// zurückgeben 
      } 
     }; 

     ListView listView = (ListView) findViewById(R.id.offline_parameter_list); 
     listView.setAdapter(this.listAdapter); 

     try { 
      List<ParameterSet> parameterSets = this.dbHelper.selectAllParameterSets(); 
      OfflineParameterActivity.this.listAdapter.clear(); 
      OfflineParameterActivity.this.listAdapter.addAll(parameterSets); // Alle Parametersätze in den ArrayAdapter werfen 
     } 
     catch (Exception e) { 
      Log.e(TAG, "Error: Parameterliste nicht erstellt", e); 
     } 

     // TODO: ist kein Eintrag passend:leere Listview! listView.setEmptyView(layout.findViewById(android.R.id.empty)); 

     listView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       ParameterSet parameter = (ParameterSet) parent.getItemAtPosition(position); 
       Intent intent = new Intent(OfflineParameterActivity.this, ParameterDetailsActivity.class); 
       intent.putExtra(ParameterDetailsActivity.EXTRA_PARAMETER_ID, parameter.getID()); 
       String source = "offline_db"; 
       intent.putExtra(ParameterDetailsActivity.EXTRA_URSPRUNGSACTIVITY, source); 
       startActivityForResult(intent, REQUEST_PARAMETER_DETAILS); 
      } 
     }); 

     // Parameternummer Text verändert 
     this.filterparameternummer.addTextChangedListener(new AbstractTextWatcher() { 
      @Override 
      public void afterTextChanged(Editable s) { 
       OfflineParameterActivity.this.listAdapter.clear(); 
      } 
     }); 
    } 

    public void search(View view) { 
     // hide Keyboard 
     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(filterparameternummer.getWindowToken(), 0); 

     try { 
      // Parameternummer filtern 
      String nummer = filterparameternummer.getText().toString(); 
      if (nummer.equals("")) { 
       this.paramnummer = -1; 
      } 
      else { 
       this.paramnummer = Integer.parseInt(nummer)-1; 
      } 
      // Infotext 
      this.infotext = filterinfotext.getText().toString(); 

      // Parametersätze auswählen 
      List<ParameterSet> parameterSets = this.dbHelper.selectAllParameterSets(this.paramnummer, this.infotext); 
      OfflineParameterActivity.this.listAdapter.clear(); 
      OfflineParameterActivity.this.listAdapter.notifyDataSetChanged(); 
      OfflineParameterActivity.this.listAdapter.addAll(parameterSets); // Alle Parametersätze in den ArrayAdapter werfen 
     } 
     catch (Exception e) { 
      Log.e(TAG, "Error weil ebbes net gut isch", e); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == REQUEST_PARAMETER_DETAILS) { 
      finish(); 
     } 
     else { 
      super.onActivityResult(requestCode, resultCode, data); 

      if (requestCode == REQUEST_BLUETOOTH_ENABLE && resultCode == RESULT_OK) { 
       startBluetoothDevicesActivity(); 
      } 

      if (requestCode == REQUEST_BLUETOOTH_DEVICES && resultCode == RESULT_OK) { 
       final BluetoothDevice device = data.getParcelableExtra(EXTRA_BLUETOOTH_DEVICE); 
       Log.d(TAG, "Selected bluetooth device " + device); 
       Bundle extras = new Bundle(1); 
       extras.putParcelable(EXTRA_BLUETOOTH_DEVICE, device); 
       bindService(BluetoothService.class, extras); 
      } 
     } 
    } 

    @Override 
    public void onServiceConnected(ComponentName name, IBinder service) { 
     super.onServiceConnected(name, service); 
     //EABAR 
      TextView deviceName = (TextView) findViewById(R.id.DeviceName); 
      deviceName.setText(getCommunicationService().getConnectedDeviceName()); 
      findViewById(R.id.verbundenMit).setVisibility(View.VISIBLE); 
      findViewById(R.id.DeviceName).setVisibility(View.VISIBLE); 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     super.onServiceDisconnected(name); 
     //EABAR: TODO: Wie bekomme ich mit wenn die Verbindung unterbrochen wird? 
     findViewById(R.id.verbundenMit).setVisibility(View.GONE); 
     findViewById(R.id.DeviceName).setVisibility(View.GONE); 
    } 

    // -------------------------------------------------------------------------------- 
    // ActionBar/Menü 
    // -------------------------------------------------------------------------------- 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.offlineparameter_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     boolean isConnected = getCommunicationService() != null; 

     if (isConnected) { 
      setTitle("T12 Control - Offlineparameter - ONLINE"); 
     } 
     else { 
      setTitle("T12 Control - Offlineparameter"); 
     } 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    private void startBluetoothDevicesActivity() { 
     Intent intent = new Intent(this, BluetoothDevicesActivity.class); 
     startActivityForResult(intent, REQUEST_BLUETOOTH_DEVICES); 
    } 

    @Override 
    public void onClick(View v) { 
     if (v.getId() == R.id.Parametersatzvergleich) { 
      if (v == parameterSatzVergleich) { 
       if (getCommunicationService() == null){ 
        Toast.makeText(this, "zuerst Verbindung zur T12 aufbauen", Toast.LENGTH_LONG).show(); 
        } 
       else{ 
        //TODO: Vergleich 
       } 
      } 
     } 
     if (v.getId() == R.id.NeuParameter) { 
      if (v == neuerParameter) { 
       if (filterparameternummer.getText().toString().equals("")) { 
        Toast.makeText(this, "Parameternummer auswählen", Toast.LENGTH_LONG).show(); 
       } 
       else { 
        int temp = Integer.parseInt(filterparameternummer.getText().toString()); 
        if (temp < 101 && temp > 0) { 
         Intent intent = new Intent(OfflineParameterActivity.this, ParameterDetailsActivity.class); 
         intent.putExtra(ParameterDetailsActivity.EXTRA_PARAMETER_INDEX, Integer.parseInt(filterparameternummer.getText().toString()) - 1); 
         intent.putExtra(ParameterDetailsActivity.EXTRA_URSPRUNGSACTIVITY, "offline_neu"); 
         startActivity(intent); 
         } 
        else { 
         Toast.makeText(this, "zulässige Parameternummern von 1 bis 100 ", Toast.LENGTH_LONG).show(); 
        } 
       } 
      } 
     } 
    } 

    private static abstract class AbstractTextWatcher implements TextWatcher { 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      // Interessiert uns nicht 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // Interessiert uns nicht 
     } 
    } 
    } 

答えて

0

アンドロイドを追加します。cacheColorHint属性をウルリストビューに

android:cacheColorHint="@android:color/transparent" 
+0

クイックアンサーですが、これは効果がありません。 – Tschegewara

+0

はxmlとコードを投稿できます。 – Jayabal

0

セットcacheColorHint属性を#00000000としてウルリストビュー アンドロイドへ:cacheColorHint =」 #00000000 "

+0

レスポンスありがとうございますが、cacheColorHintはこの効果に影響していないようです。 – Tschegewara

+0

私はあなたに返信する場合、私はあなたのために何かを見つけることができます – user

0

試してみてください。

listView.setSelector(android.R.color.transparent); 

はそれがお役に立てば幸いです。

関連する問題