0

Я раздуваю несколько строк в прокрутке. Линейный макет. Я пытаюсь изменить цвет фона строки, которую пользователь выбирает. Но я выбираю только строку в какой-то области он меняет цвет фона строки. Я не понимаю, почему это происходит. Пожалуйста, помогите мне.Установить выбор линейной компоновки в виде прокрутки

ScrollView XML

<ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/mainScroll" 
     android:layout_marginTop="5dp" > 

     <LinearLayout 
      android:id="@+id/mainData" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="8dp" 
      android:orientation="vertical" > 
     </LinearLayout> 
    </ScrollView> 

InnerLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/resultLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" 
    android:background="@drawable/backgroundcolor" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/linearLayout2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/id1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:singleLine="true" 
      android:text="25 Sep 2013" /> 

     <TextView 
      android:id="@+id/id2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:singleLine="true" 
      android:text="" /> 

     <TextView 
      android:id="@+id/id3" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:singleLine="true" 
      android:text="" /> 

     <ImageView 
      android:id="@+id/id4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="5dp" 
      android:src="@drawable/ic"/> 
    </LinearLayout> 

</LinearLayout> 

BackgroundColor.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
android:state_selected="false" 
    android:state_pressed="false" 
    android:drawable="@color/grey" /> 
<item android:state_pressed="true" 
    android:drawable="@color/itemselected" /> 
<item android:state_selected="true" 
android:state_pressed="false" 
    android:drawable="@color/itemselected" /> 
</selector> 

Color.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="grey">#ffffff</color> 
    <color name="itemselected">#EDEDED</color> 
</resources> 

Изображение в Image Link

Он работает по выбору, но не заполняя полную высоту layout.Please помочь мне найти этот вопрос

ответ

-1

Попробуйте, как вы можете сделать это

final LinearLayout tripdetailsdata = (LinearLayout) inflater 
        .inflate(R.layout.linearLayout1, null); 
      final LinearLayout trip_data = (LinearLayout)tripdetailsdata.findViewById(R.id.linearLayout2); 

      trip_data.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        trip_data1.setBackgroundColor(Color.WHITE); 
        trip_data.setBackgroundColor(Color.BLUE); 
        trip_data1=trip_data; 
       } 
      }); 
+0

ok Я пытаюсь это сделать, что будет tripdetailsdata и trip_data, который будет –

+0

, будет вашим основным макетом, а вторым будет ваш внутренний макет LinearLayout – Developer

0

попробуйте изменить ширину/height линейного макета innerlayout для wrap_content? Кроме того, это поможет, если вы разместите свой код.

Кроме того, я должен, вероятно, сказать, что для того, что, похоже, вы пытаетесь сделать, вероятно, вы должны использовать представление списка, а не линейный макет внутри прокрутки.

+0

, что я не получаю вы –

+0

изменить в innerlayout.xml, изменить ширину/высоту wrap_content (корневой LinearLayout) –

0

Попробуйте ниже в качестве Inner Layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/resultLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#F00" 
    android:baselineAligned="false" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/linearLayout2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/id1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:singleLine="true" 
      android:text="25 Sep 2013" /> 

     <TextView 
      android:id="@+id/id2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:singleLine="true" 
      android:text="coloumn 2" /> 

     <TextView 
      android:id="@+id/id3" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:singleLine="true" 
      android:text="Coloumn 2" /> 

     <ImageView 
      android:id="@+id/id4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="5dp" 
      android:src="@drawable/ic_launcher" /> 
    </LinearLayout> 

</LinearLayout> 
+0

это как это происходит http://s22.postimg.org/5d0lxpck1/Image.png –

+0

Изменить андроид: background = "# F00" с помощью андроида: background = "@ drawable/backgroundcolor" в верхнем линейном макете –

+0

видеть, что он не показывает в полном объеме строки он не заполнен –

0

Мое предложение заключается в использовании Custom listview Вместо того, чтобы пытаться повторить Linear Layout содержание в scrollview. Здесь также вы можете достичь той же задачи с более гибкой. Здесь вы должны использовать метод override getView, чтобы изменить цвет фона конкретной строки. Также вы можете использовать ContextMenu.

+0

Мне не нужно использовать ListView.i знать о списке, но Мне не нужно использовать listview –

+0

Могу ли я узнать, почему вы не хотите просматривать список. – Gunaseelan

+1

Я не хочу уходить от проблем. Если я начал с этого, я закончу это .ListView я не хочу использовать –

0

Я предлагаю вам использовать ListView вместо ScrollView и LinearLayout. Потому что ListView имеют оба свойства. Так почему бы вам не попробовать?

Попробуйте следующие шаги ..

1) Реализовать onItemClickListener в список вашего зрения, как показано ниже.

list.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(
      AdapterView<?> arg0, View arg1, 
      int position, long arg3) { 
       adapter.setSelectedPosition(position); 
    } 
}); 

2) Теперь, в CustomAdapter классе, написать следующий код

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    convertView = inflater.inflate(R.layout.special_item_layout, null); 

    RelativeLayout relativeLayout = (RelativeLayout) convertView 
      .findViewById(R.id.relativeLayout1); 

    if ((adapter.getSelectedPosition()) == position) { 
     relativeLayout.setBackgroundResource(R.drawable.BackgroundColor); 
    } else { 
     relativeLayout.setBackgroundResource(R.color.transparent); 

    //other code 
} 

Я поместил transparent цвет, если элемент не выбран. Вы можете разместить любой ресурс согласно вашему требованию.

Примечание

Ваш список должен иметь singleChoice вариант в макете. И никакого фона.

<ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:cacheColorHint="#00000000" 
     android:choiceMode="singleChoice"> 
</ListView> 
+0

Брат, которого я хочу, должен сделать это в ListView. Это приказ реализовать это, так как я помогаю мне таким образом, пожалуйста, –

+0

@Rahul, просто удалите 'ScrollView' и' LinearLayout' из вашего основного макета. и вместо этого возьмите «ListView». У вас есть макет 'item', который будет использоваться в вашем списке. Вы можете найти простой пример http://www.vogella.com/articles/AndroidListView/article.html –

+0

Мне не нужно использовать Listview для этого, поэтому я спрашиваю вас, будет ли какой-то способ, чтобы мы могли это сделать как listview –

Смежные вопросы