2016-03-23 2 views
0

У меня есть эта странная проблема с моими звездами рейтинга.Оценка бара показывает больше звезд при повороте приложения

This is my app in vertical position

This is my app in horizontal position

Как вы можете видеть звезды полностью изменить

Это мой XML-файл:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="@drawable/main" 
    tools:context="com.example.draganam.blankapp.Nivo1Activity"> 

    <TableLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:shrinkColumns="1,0" android:stretchColumns="0,1"> 

     <TableRow 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingTop="50dp"> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/slika0" 
       android:src="@drawable/becutan1" 
       android:layout_column="0" 
       android:layout_marginRight="40px" /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/slika1" 
       android:src="@drawable/blizoo1" 
       android:layout_column="1" /> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <RatingBar 
       android:id="@+id/rb0" 
       style="?android:attr/ratingBarStyleIndicator" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:numStars="5" 
       android:stepSize="1.0" 
       android:isIndicator="true" 
       android:scaleX="0.7" 
       android:scaleY="0.7"/> 

      <RatingBar 
       android:id="@+id/rb1" 
       style="?android:attr/ratingBarStyleIndicator" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:numStars="5" 
       android:stepSize="1.0" 
       android:isIndicator="true" 
       android:scaleX="0.7" 
       android:scaleY="0.7"/> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:paddingTop="50dp"> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/slika2" 
       android:src="@drawable/brilijant1" 
       android:layout_column="0" 
       android:layout_marginRight="40px" /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/slika3" 
       android:src="@drawable/vitaminka1" 
       android:layout_column="1" /> 
     </TableRow> 
     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
     <RatingBar 
      android:id="@+id/rb2" 
      style="?android:attr/ratingBarStyleIndicator" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numStars="5" 
      android:stepSize="1.0" 
      android:isIndicator="true" 
      android:scaleX="0.7" 
      android:scaleY="0.7"/> 

     <RatingBar 
      android:id="@+id/rb3" 
      style="?android:attr/ratingBarStyleIndicator" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numStars="5" 
      android:stepSize="1.0" 
      android:isIndicator="true" 
      android:scaleX="0.7" 
      android:scaleY="0.7"/> 
    </TableRow> 

    </TableLayout> 
</RelativeLayout> 

Это мой Java-код:

Context ctx2 = this; 
String[][] arrayWithInformations = new String[5][]; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_nivo1); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    DatabaseOperations databaseOperations = new DatabaseOperations(ctx2); 
    Cursor cursorLogo = databaseOperations.getInformationsForLogos(databaseOperations); 
    // looping through all rows and adding to list 
    Integer i = 0; 
    if (cursorLogo.moveToFirst()) { 
     do { 
      String[] helperArray = {cursorLogo.getString(0),cursorLogo.getString(1),cursorLogo.getString(2),cursorLogo.getString(3), 
        cursorLogo.getString(4),cursorLogo.getString(5)}; 
      arrayWithInformations[i] = helperArray; 
      i++; 

     } while (cursorLogo.moveToNext()); 
    } 
    int firstRating = Integer.parseInt(arrayWithInformations[0][4]); 
    int secondRating = Integer.parseInt(arrayWithInformations[1][4]); 
    int thirdRating = Integer.parseInt(arrayWithInformations[2][4]); 
    int fourthRating = Integer.parseInt(arrayWithInformations[3][4]); 
    RatingBar rb0 = (RatingBar) findViewById(R.id.rb0); 
    rb0.setRating(firstRating); 
    RatingBar rb1 = (RatingBar) findViewById(R.id.rb1); 
    rb1.setRating(secondRating); 
    RatingBar rb2 = (RatingBar) findViewById(R.id.rb2); 
    rb2.setRating(thirdRating); 
    RatingBar rb3 = (RatingBar) findViewById(R.id.rb3); 
    rb3.setRating(fourthRating); 

Я получаю значение рейтинга из файла базы данных и все работает отлично, звезды в порядке, но когда я повернуть телефон они все неправильно. Я знаю that, когда u поворачивает ваш телефон, текущая активность снова загружается, но это тот же код, и он загружается неправильно. Может быть, это умножает звезды. Я могу показаться смешным, но я понятия не имею, что происходит. Кто-то, пожалуйста, дайте мне руководство ..

+1

вы можете показать нам, что arrayWithInformations и где это initiaized – Raghunandan

+0

я предлагаю вам начать отладку с контрольными точками. нет ничего плохого в ui. вычисляя звезды в проблеме, тогда я бы посмотрел, как вы получаете данные из sqlite. – Raghunandan

+0

Я сделал отладку. Все выглядит отлично ... Как я уже сказал, это происходит из файла базы данных SQLite. Они правы в вертикальном режиме, первый - 4, затем 5,2 и 3. Но когда я вращаюсь, они меняются, и когда я поворачиваюсь назад к вертикали, они снова прекрасны. –

ответ

1

Я выяснил, проблема!

андроид: shrinkColumns = "1,0" андроид: stretchColumns = "0,1"

Установка этого к TableLayout вызвало этот странный вопрос.

Спасибо всем за ваш интерес, помогая мне ..